2007年06月24日

size length

あらかじめ断っておきますが、オチはありません。

やっぱり「あらかじめ」は最初に使いたい。よく南武線に乗ってから、「京浜東北線が○○の理由により、現在運転を見合わせております。あらかじめご了承下さい。」などという放送がなされることがあるが、まったくあらかじめっていない。それならば、さっき先に来た反対方向、立川方面行きに乗って溝ノ口経由で行きたかった。

いきなり脱線してしまったが、Rubyの配列の要素数はsizeメソッドでもlengthメソッドでも良いらしい。ずっと何かの本にたまたま載っていたlengthを使っていたが、最近買ったRails本「Ruby on Rails入門―優しいRailsの育て方」ではsizeを使っていたのでアレっと思っただけです。

ひょっとして、全てのオブジェクトに実装されている?

irb(main):001:0> [1,2,3].size => 3 irb(main):002:0> [1,2,3].length => 3 irb(main):003:0> "123".size => 3 irb(main):004:0> "123".length => 3 irb(main):005:0> 123.size => 4 irb(main):006:0> 123.length NoMethodError: undefined method `length' for 123:Fixnum from (irb):6 from :0 irb(main):007:0> 123.5.size NoMethodError: undefined method `size' for 123.5:Float from (irb):7 from :0 irb(main):008:0> 123.5.length NoMethodError: undefined method `length' for 123.5:Float from (irb):8 from :0

Fixnumはsizeがあってlengthがない、Floatはどちらもないのが面白い。Fixnumのsizeは何を表すのだろうと思い、調べたら実装上のバイト数らしい。

irb(main):018:0> 1234567890.size => 4 irb(main):019:0> 12345678901.size => 8 irb(main):020:0> 12345678901234567890.size => 8 irb(main):021:0> 123456789012345678901234567890.size => 16

なかなか面白い。しかし、その理由ならFloatにsizeがあっても良いように思われるのだが。まぁ、配列と文字列以外では必要なさそうなので、深く考えない事にしよう(オチなし)

投稿者 iwazawa : 2007年06月24日 21:15 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?