arrays – 对象数组中的最大值
发布时间:2020-12-17 02:49:30 所属栏目:百科 来源:网络整理
导读:我是ruby的新手.我正在尝试做以下但没有成功. 我有一个对象数组,我们称之为objs.每个对象都有多个属性,其中一个属性是一个包含数字的变量,我们称之为val1.我想迭代对象数组并确定val1通过所有对象的最大值. 我尝试过以下方法: def init(objs) @objs = objs
我是ruby的新手.我正在尝试做以下但没有成功.
我有一个对象数组,我们称之为objs.每个对象都有多个属性,其中一个属性是一个包含数字的变量,我们称之为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 正如我所说,我只是在学习块. 任何建议都是受欢迎的. 谢谢 解决方法
假设您已设置以下模型:
class SomeObject attr_accessor :prop1,:prop2,:val1 def initialize(prop1,prop2,val1) @prop1 = prop1 @prop2 = prop2 @val1 = val1 end end #define your objects from the class above david = SomeObject.new('David','Peters',23) steven = SomeObject.new('Steven',26) john = SomeObject.new('John',33) #define an array of the above objects array = [david,steven,john] 然后通过将条件传递到其块中来使用max_by,如下所示,以确定具有max val1值的对象.最后调用val1来获取max对象的值. array.max_by {|e| e.val1 }.val1 #=> 33 您也可以考虑使用哈希(无需定义新类),如下所示: david = {f_name: 'David',s_name: 'Peters',age: 23} steven = {f_name: 'Steven',age: 26} john = {f_name: 'John',age: 33} array = [david,john] array.max_by { |hash| hash[:age] }[:age] #=> 33 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |