2011年10月10日

[ruby-list:48453] Re: 1.8.7と1.9.2の挙動の違いについて

下田です。
岩月さん、お返事ありがとうございます。

> String#sliceの戻り値が異なる(1.8は文字コード(Integer)、1.9は文字列(String))からではないでしょうか。
>
> % ruby193 -v -e "p '1234'.slice(0)"
> ruby 1.9.3dev (2011-08-05 revision 32853) [x86_64-darwin11.0.0]
> "1"

> % ruby -v -e "p '1234'.slice(0)"
> ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
> 49
調べてみたらビンゴのようです。
http://d.hatena.ne.jp/rubyyaro/20110224/1298559406
を参考に、部分文字列抽出の所を
'1234'.slice(0)
から
'1234'.scan(/./).slice(0)
にしたらうまく行きました。

戻り値が文字コードだったのですね。
これは気付きにくい・・・
PHPを少しかじった人をRubyに移行させようとしているのですが

'1234'.slice(1..'1234'.length-1)

'1234'.scan(/./).slice(1..'1234'.length-1).join

のようにscanとjoinが必要な理由を初心者に説明するのはきついです。
これだと、自信を持って「Rubyの方がいいよ」とは言いづらいです。
Ruby1.9で色々改善されてるから、Ruby1.9を導入してもらった方がいいですかね。


--
A A Name : 下田 純也 (Jun'ya Shimoda)
(o'.'o) _/ e-mail : jun-shimo@nifty.com
(> ~ <)/ Blog : http://d.hatena.ne.jp/JironBach/
Twitter: http://twitter.com/JironBach/

投稿者 xml-rpc : 2011年10月10日 06:54
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/106839
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。