です。私はRubyで新しくなっています。私は次のことをしようとしていますが、成功していません。オブジェクトの配列内の最大値は
私はオブジェクトの配列を持っています、それをobjsと呼ぶことにしましょう。各オブジェクトには複数のプロパティがあり、そのうちの1つは数値を保持する変数です。それをval1と呼ぶことにします。私はオブジェクトの配列を反復し、すべてのオブジェクトを通してval1の最大値を決定したいと思います。
def init(objs)
@objs = objs
@max = 0
cal_max
end
def cal_max
@max = @objs.find { |obj| obj.val1 >= max }
# also tried
@objs.each { |obj| @max = obj.val1 if obj.val1 >= @max }
end
私が言ったように、私はちょうどブロックについて学んだ:
は、私は、次の試してみました。
ご提案は大歓迎です。各オブジェクトのメソッドを呼び出し、その結果の新しい配列を作成し、最大値を見つける
おかげ
チャームのように働いた。質問、しないでくださいarray.max_by {| e | e.val1}は 'e'オブジェクトを返しますか?それで、最後に.val1でアクセスする必要があるのはなぜですか? array.max_by {| e | e.val1} .val1 – Sebastian
@Sebastianはい、それを 'e'オブジェクトとして記述するのは間違いです。 'array.max_by {| e | e.val1} 'は_SomeObject_オブジェクトを返します。最後に 'val1'プロパティを決定するために' val1'メソッドを呼び出します。たとえば、最初の名前が必要な場合は 'prop1'を呼び出すこともできます。お役に立てれば。 –
はい、それはたくさんあります。ありがとう – Sebastian