设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2165|回复: 4
打印 上一主题 下一主题

[已经解决] 数组迭代

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
55 小时
注册时间
2011-10-7
帖子
36
跳转到指定楼层
1
发表于 2016-9-3 20:46:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
首先,→_→我完全没有一点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这两个参数分代表什么啊……
---------------------------------------------------------------------------------------
  有木有前辈举几个简单的荔枝让我理解一下……

Lv4.逐梦者

梦石
0
星屑
9727
在线时间
3227 小时
注册时间
2011-3-24
帖子
739

开拓者

2
发表于 2016-9-3 21:18:23 | 只看该作者
你可以思考一个问题,
一个数组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也同理

评分

参与人数 1星屑 +250 梦石 +1 收起 理由
RaidenInfinity + 250 + 1 楼主认可的解答

查看全部评分

>>→Lanza Games 2020←<<
Lanza Schneider
浪子心,孤星梦永远流浪……
~不会放弃,我的精力永远充沛~
>>>>>Lanza Adventure<<<<<
>>>>>Lanza的新年派对!<<<<<
>>>>>Lanza的口袋心脏病!<<<<<
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
55 小时
注册时间
2011-10-7
帖子
36
3
 楼主| 发表于 2016-9-4 20:12:55 | 只看该作者
Mr.Jin 发表于 2016-9-3 21:18
你可以思考一个问题,
一个数组a里全是数字的时候,你可以直接用a.max得出数组中最大的一个数字。
但是如果数 ...


前辈,恕我愚钝 ,还有个地方不明白
max{|a,b| a.x - b.x} 里面

a 和 b 这两个参数分别代表什么呢?

(所以我也不明白后面 a.x - b.x 的具体作用……)

点评

你这么理解:max这个函数求一个数组的最大值,他就要把数组的元素两个一组连续比较,而这个过程就是这个带区块的函数 a和b 就是被比较的两个对象  发表于 2016-9-4 20:15
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
55 小时
注册时间
2011-10-7
帖子
36
4
 楼主| 发表于 2016-9-4 22:35:58 | 只看该作者
本帖最后由 pyypokemon 于 2016-9-4 22:36 编辑
Mr.Jin 发表于 2016-9-3 21:18
你可以思考一个问题,
一个数组a里全是数字的时候,你可以直接用a.max得出数组中最大的一个数字。
但是如果数 ...


谢谢前辈,我终于理解了……
话说……问完问题后我需要做什么吗……
我是说有木有 “好评” 或者 “感谢” 或者 “结贴” 之类的按钮……
我没什么经验啊

还是就放着不管?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 05:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表