[#48450] 1.8.7と1.9.2の挙動の違いについて — "Jun'ya Shimoda" <jun-shimo@...>

下田です。

13 messages 2011/10/09

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

From: "Jun'ya Shimoda" <jun-shimo@...>
Date: 2011-10-09 21:54:11 UTC
List: ruby-list #48453
下田です。
岩月さん、お返事ありがとうございます。

> 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/


In This Thread