arrays – 对象数组中的最大值

arrays – 对象数组中的最大值,第1张

概述我是ruby的新手.我正在尝试做以下但没有成功. 我有一个对象数组,我们称之为objs.每个对象都有多个属性,其中一个属性是一个包含数字的变量,我们称之为val1.我想迭代对象数组并确定val1通过所有对象的最大值. 我尝试过以下方法: def init(objs) @objs = objs @max = 0 cal_maxenddef cal_max @max = @ob 我是ruby的新手.我正在尝试做以下但没有成功.

我有一个对象数组,我们称之为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 – 对象数组中的最大值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存