Project1
标题:
数组迭代
[打印本页]
作者:
pyypokemon
时间:
2016-9-3 20:46
标题:
数组迭代
首先,→_→我完全没有一点ruby以及其它编程语言基础……
最近在看一些教程以及F1
我想问下下Enumerable 可举例模块下的这几个方法要怎么用啊:
max {|a, b| ... }
max_by {|item| ... }
min {|a, b| ... }
min_by {|item| ... }
sort {|a, b| ... }
sort_by {|item| ... }
------------------------------------------------------------------------------------
我想参考一下这个贴子
https://rpg.blue/thread-157153-1-1.html
写成
msgbox [1,23,45,34].sort_by{|a|a*10}
这样一个例子
然而打印出来的还是只用sort的效果,
并不是我想象的[10,230,340,450]
(我想一定是我哪里理解错了……)
----------------------------------------------------------------------------------------
还有,像
max {|a, b| ... }
min {|a, b| ... }
sort {|a, b| ... }
这几个方法,= =我根本看不懂说明……
a和b这两个参数分代表什么啊……
---------------------------------------------------------------------------------------
有木有前辈举几个简单的荔枝让我理解一下……
作者:
Mr.Jin
时间:
2016-9-3 21:18
你可以思考一个问题,
一个数组a里全是数字的时候,你可以直接用a.max得出数组中最大的一个数字。
但是如果数组里装的不是数字而是其它的一些对象怎么办?对象又不能判断大小,怎么得出数组中"最大"的一个呢?
这时你就可以用带区块的max来自己写这个用来"判断大小"的方法,如下例:
P = Struct.new(:name, :x)
a = [
P.new("P1", 3),
P.new("P2", 6),
P.new("P3", 4)
]
m = a.max{ |a,b|
a.x - b.x
}
puts m.name
复制代码
其它的min、sort也同理
作者:
pyypokemon
时间:
2016-9-4 20:12
Mr.Jin 发表于 2016-9-3 21:18
你可以思考一个问题,
一个数组a里全是数字的时候,你可以直接用a.max得出数组中最大的一个数字。
但是如果数 ...
前辈,恕我愚钝
,还有个地方不明白
max{|a,b| a.x - b.x} 里面
a 和 b 这两个参数分别代表什么呢?
(所以我也不明白后面 a.x - b.x 的具体作用……)
作者:
pyypokemon
时间:
2016-9-4 22:35
本帖最后由 pyypokemon 于 2016-9-4 22:36 编辑
Mr.Jin 发表于 2016-9-3 21:18
你可以思考一个问题,
一个数组a里全是数字的时候,你可以直接用a.max得出数组中最大的一个数字。
但是如果数 ...
谢谢前辈,我终于理解了……
话说……问完问题后我需要做什么吗……
我是说有木有 “好评” 或者 “感谢” 或者 “结贴” 之类的按钮……
我没什么经验啊
还是就放着不管?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1