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来自己写这个用来"判断大小"的方法,如下例:
  1. P = Struct.new(:name, :x)
  2. a = [
  3.   P.new("P1", 3),
  4.   P.new("P2", 6),
  5.   P.new("P3", 4)
  6. ]
  7. m = a.max{ |a,b|
  8.   a.x - b.x
  9. }
  10. 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