logo       

[ruby-list:42394] eachはなぜ元々のオブジェクトが返るのか?: msg#00048

lang.ruby.japanese

Subject: [ruby-list:42394] eachはなぜ元々のオブジェクトが返るのか?

藤岡です。

前から思っていたのですが、eachはなぜオブジェクトそのものが
返るんだろうかと思いまして。
主張を先に言いますと、eachがブロックの最後の値が配列で返ったら、
mapなんぞはいらないのになと思いまして。

irb(main):016:0> ["a","b","c"].each{|val|val+"*"}.join("-")
=> "a-b-c"
eachだとこんなんで、mapだと、
irb(main):017:0> ["a","b","c"].map{|val|val+"*"}.join("-")
=> "a*-b*-c*"
こうなります。それで、eachがその最初のオブジェクトそのものを返す理由が
あるのだろうかと。

んで、さらに主張しますと、
["a","b","c"].each_with_index{|val,num|"#{num.to_s}:#{val}"}.join("-")
=> "a-b-c"
となりますが、本当は
=> "0:a-1:b-2c"
となったらうれしいです。
eachがmapになるのがだめなら、
map_with_index{...}とかがあればうれしいです。
こっちの方が現実的かな?

うれしい人ってほかにいませんでしょうか?
--
fujioka




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise