Project1

标题: max,min和sort的意思和用法 [打印本页]

作者: 龙腾天下    时间: 2011-8-24 23:18
标题: max,min和sort的意思和用法
max,min和sort三个如何用呢?主要用在什么地方?dsu_plus_rewardpost_czw
作者: fux2    时间: 2011-8-24 23:26
sort是把数组从小到大排列,min取数组最小值,max取数组最大值
作者: 龙腾天下    时间: 2011-8-24 23:28
fux2 发表于 2011-8-24 23:26
sort是把数组从小到大排列,min取数组最小值,max取数组最大值

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

带块只是干扰返回分歧
(手机打不出竖杠,用感叹号代替)
.sort 等于 .sort{!a,b! a<=>b}
然后最好自己多试验看效果,从语言比较难描述。
作者: 龙腾天下    时间: 2011-8-24 23:41
fux2 发表于 2011-8-24 23:35
带块只是干扰返回分歧
(手机打不出竖杠,用感叹号代替)
.sort 等于 .sort{!a,b! ab}

如何试验。。话说,你说的带块我都不知道怎么用。。
作者: 心雪    时间: 2011-8-25 00:11
本帖最后由 心雪 于 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
作者: shoed    时间: 2011-8-25 00:19
我来回答几句,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 06:47
本帖最后由 亿万星辰 于 2011-8-25 22:43 编辑

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1