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

Project1

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

[已经解决] max,min和sort的意思和用法

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
295 小时
注册时间
2008-5-24
帖子
523
跳转到指定楼层
1
发表于 2011-8-24 23:18:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
max,min和sort三个如何用呢?主要用在什么地方?

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42404
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2011-8-24 23:26:49 | 只看该作者
sort是把数组从小到大排列,min取数组最小值,max取数组最大值
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
295 小时
注册时间
2008-5-24
帖子
523
3
 楼主| 发表于 2011-8-24 23:28:23 | 只看该作者
fux2 发表于 2011-8-24 23:26
sort是把数组从小到大排列,min取数组最小值,max取数组最大值

我记得sort! 之后还有{|a,b|}的吧。。这个如何解释。。
前方
迷茫
后方
已不在
回复

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42404
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2011-8-24 23:35:40 | 只看该作者
龙腾天下 发表于 2011-8-24 23:28
我记得sort! 之后还有{|a,b|}的吧。。这个如何解释。。

带块只是干扰返回分歧
(手机打不出竖杠,用感叹号代替)
.sort 等于 .sort{!a,b! a<=>b}
然后最好自己多试验看效果,从语言比较难描述。

点评

打错了(我是打五笔的),打多了个 Y ,应该是“版主辛苦了。”  发表于 2011-8-24 23:44
版方辛苦了,竟然用手机上,感谢。。  发表于 2011-8-24 23:44

评分

参与人数 1星屑 +4 收起 理由
龙腾天下 + 4 谢谢!

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
295 小时
注册时间
2008-5-24
帖子
523
5
 楼主| 发表于 2011-8-24 23:41:52 | 只看该作者
fux2 发表于 2011-8-24 23:35
带块只是干扰返回分歧
(手机打不出竖杠,用感叹号代替)
.sort 等于 .sort{!a,b! ab}

如何试验。。话说,你说的带块我都不知道怎么用。。
前方
迷茫
后方
已不在
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
169 小时
注册时间
2007-8-12
帖子
203
6
发表于 2011-8-25 00:11:36 | 只看该作者
本帖最后由 心雪 于 2011-8-25 10:34 编辑

array = [1,2,3,4,5]
如果想要比较相反数的话可以
array.sort{|a,b|-a<=>-b}
min和max也可以带块比较
块 即语句块(proc),初学者可以理解为一段包在{}内的代码,会和参数一样传给sort方法,sort方法会把需要比较的两个数作为语句块的参数传给语句块,取得语句块的结果作为比较结果,如果没有块,默认用a<=>b
<=>的意思是比较a和b,如果a>b 返回1 a=b返回0 a<b返回-1
如果想要自己编写带块的方法,可以使用yield,yield可以执行传给方法的语句块(block),同时把参数也顺次传给语句块
example:
def fuck
p yield(1,2)
end
fuck{|a,b| a+b} #=> 3

点评

如果是指传给语句块的参数的话只能传两个,sort是用语句块进行两个数之间的大小比较的。  发表于 2011-8-26 12:07
块只能传一个啊= =  发表于 2011-8-26 11:54
先谢谢心雪姐姐了!  发表于 2011-8-25 22:28
sort里的 块可以超过两个吗?  发表于 2011-8-25 22:28

评分

参与人数 1星屑 +2 收起 理由
龙腾天下 + 2 谢谢!

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
66 小时
注册时间
2011-5-25
帖子
73
7
发表于 2011-8-25 00:19:14 | 只看该作者
我来回答几句,sort后面带块和不带块都是从小到大排列,举个例子
class my
    attress:na
    def initialize(v)
        @na=v
    end
         
end

array=[]
array.push(my.new(5))
array.push(my.new(1))
array.sort{|a,b|a.na<=>b.na}
会以na的大小来排列

点评

还有不带块的?。。  发表于 2011-8-25 22:14
就是给你看个例子罢了,这种小问题不用纠结,让你产生误解,那不好意思  发表于 2011-8-25 09:46
my的m不用大写?  发表于 2011-8-25 09:39

评分

参与人数 1星屑 +2 收起 理由
龙腾天下 + 2 谢谢!

查看全部评分

回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

8
发表于 2011-8-25 06:47:25 | 只看该作者
本帖最后由 亿万星辰 于 2011-8-25 22:43 编辑

块的概念可以理解的前面操作的具体规则。
至于min和max,除了用于取出一个数组中的两个最值外,常用于一些值的最低最高限额值,比如默认系统中常见的
  1. @hp = [@hp, self.maxhp].min
复制代码
就是说之前的操作无论你让@hp变得多大,在执行到这里的时候,也要和self.maxhp做比较,取一个相对较小的,也就是说只可以小于等于self.maxhp。

评分

参与人数 1星屑 +2 收起 理由
龙腾天下 + 2 谢谢!

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 16:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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