いくつかの機能を考えてみましょうfoo
:
def foo(input)
input * 2
end
いくつかの配列の入力の最大値を取得する方法はa
?
a = [3, 5, 7, 9, 6]
次のようなもの (これは機能しません) は 9 を返します。
a.max do |value|
foo(value)
end
どうやってするの?
ルビー1.9.2
いくつかの機能を考えてみましょうfoo
:
def foo(input)
input * 2
end
いくつかの配列の入力の最大値を取得する方法はa
?
a = [3, 5, 7, 9, 6]
次のようなもの (これは機能しません) は 9 を返します。
a.max do |value|
foo(value)
end
どうやってするの?
ルビー1.9.2
max_by
ではなく、が必要ですmax
。http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-max_by
max
:
最大値を持つ enum 内のオブジェクトを返します。最初の形式は、すべてのオブジェクトが Comparable を実装していることを前提としています。2 番目は、ブロックを使用して a <=> b を返します。
a = %w(albatross dog horse)
a.max #=> "horse"
a.max {|a,b| a.length <=> b.length } #=> "albatross"
ブロックmax
も必要ですが、期待したとおりにはなりません。
max_by
:
指定されたブロックから最大値を与える enum 内のオブジェクトを返します。
ブロックが指定されていない場合は、代わりに列挙子が返されます。
a = %w(albatross dog horse)
a.max_by {|x| x.length } #=> "albatross"
配列マップを使用:a.map{|v|foo(v)}.max