我有一个对象数组,我们称之为obJs.每个对象都有多个属性,其中一个属性是一个包含数字的变量,我们称之为val1.我想迭代对象数组并确定val1通过所有对象的最大值.
我尝试过以下方法:
def init(obJs) @obJs = obJs @max = 0 cal_maxenddef 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 endend#define your objects from the class abovedavID = SomeObject.new('DavID','Peters',23)steven = SomeObject.new('Steven',26)john = SomeObject.new('John',33)#define an array of the above objectsarray = [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总结
以上是内存溢出为你收集整理的arrays – 对象数组中的最大值全部内容,希望文章能够帮你解决arrays – 对象数组中的最大值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)