12/05/15 12:35:55.44
>>967
実践はともかく、プログラミングの学習においては、基本的な関数を自作するのは重要だと思う
それはともかく、Haskellと比較用にRubyでlength関数作ろうとしたら配列はeachメソッドで各要素にアクセスできるが、文字列はeachは行単位で、文字単位にはeach_charを使わないといけないのが分かったんだが、それだと配列と文字列で別々にlength関数作らんといかんの?
ダックタイピング出来るのがLLの利点じゃなかったのかと言いたい
(しかも、1.9からは文字列のeachも廃止になるのでeachの構文糖衣であるfor文が文字列で使えない)
以下のコードは配列だと正しい結果を返すが、文字列だと1.8系だと正しくない結果を返し、1.9系だとエラーになる(eachメソッドが無いぞゴラァ!と怒られる)
def mylength (str)
sum = 0
for i in str
sum += 1
end
return sum
end
Ruby詳しくないとは言え、この動作がおかしいのだけは理解できる