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

Project1

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

[已经解决] 看脚本时发现的问题:关于块和“<=>”

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
78 小时
注册时间
2010-8-12
帖子
54
跳转到指定楼层
1
发表于 2010-8-20 16:27:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

2
发表于 2010-8-20 16:34:50 | 只看该作者
<=>是方法,每个类都不一样(存疑),大多数情况下用作 == ,不过好像有自己的一套规则。

+1 和-1 是设定返回值,Ruby规定如果没用用return来设定返回值,那么就返回最后一次的那个值。这里等同于 return 1 ; reuturn -1

至于块么,可以理解为是一个匿名的函数(方法)。

求楼下补充,特别是老板。(逃离玩游戏去,所以写的不是很详细。)

点评

飞船操作符see more: [url]http://chinaonrails.com/topic/view/108.html[/url]  发表于 2010-8-26 13:00
被和谐了一个符号貌似- -你懂的  发表于 2010-8-26 12:51
定义了(某些地方称为船形操作符)之后include Comparable,就可以做各种>,=的判断了  发表于 2010-8-26 12:48

评分

参与人数 1星屑 +200 收起 理由
六祈 + 200 热心参与啊热心参与~

查看全部评分


See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1598
在线时间
527 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

3
发表于 2010-8-20 17:05:27 | 只看该作者
本帖最后由 逸豫 于 2010-8-20 17:10 编辑

关于语句块 闭包的详细说明?http://hi.baidu.com/chendeping/b ... ea831863279842.html
记得我买过一本Learning Ruby的书里面说过这个问题……可是现在不在手上……

恩<=>貌似不同的类有不同的方法,大概就是 大于返回1 等于返回0 小于返回-1

根据我的那个连接来看:那个1 0 -1那个,不应该理解为return 这是方法的返回…… 应该理解为next -1这样?

点评

我记得有这么一句:()  发表于 2010-8-26 13:03
如果没有return,方法会返回最后一行的值。所以那个1,0,-1应该是return的  发表于 2010-8-26 12:46
完全……看不懂TAT,怎么办 。ps:竟然有书……  发表于 2010-8-23 13:25
好吧……其实我是萌它的语言风格- -  发表于 2010-8-20 20:24
Learning Ruby 讲得不深不浅真的让人哭笑不得——我也买了一本 = =  发表于 2010-8-20 19:39

评分

参与人数 1星屑 +200 收起 理由
六祈 + 200 感谢你参与讨论~

查看全部评分

[url=http://rpg.blue/thread-219730-1-1.html]http://unhero.sinaapp.com/wi.php[/url]
[color=Red]如你所见这是个死坑,没错这就是打我的脸用的[/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
4
发表于 2010-8-20 18:24:38 | 只看该作者
本帖最后由 dbshy 于 2010-8-20 18:26 编辑

块的理解 搜索 荷西 block的真意
我理论不行 理解不透彻 就不说了

另外 <=> 操作符
返回 1 0 -1

首先你必须理解sort的用法
http://rpg.blue/forum.php?mod=vi ... 2141&highlight=

然后对<=> 的理解

对数组内容进行排序。若带块调用时,将把 2 个参数传给块,然后使用块的计算结果进行比较。若没有块时,使用 <=> 运算符进行比较。sort! 的对数组单元的排序过程具有破环性。
p [1,2,3].sort{|a,b| a <=> b}
=> [1,2,3]
p [1,2,3].sort{ - 1 }
=> [1,2,3]

p [1,2,3].sort{|a,b| b <=> a}
=> [3,2,1]
p [1,2,3].sort{ 1 }
=> [3,2,1]
将例子结和sort的说明 应该看的懂吧 = =

点评

是不是搜索:block的真意 作者是:禾西 为什么我搜索不到呢囧  发表于 2010-8-23 12:10
人懒 直接拼音  发表于 2010-8-20 18:34
禾西。  发表于 2010-8-20 18:32

评分

参与人数 1星屑 +200 收起 理由
六祈 + 200 感谢你参与讨论~

查看全部评分

来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
5
发表于 2010-8-21 00:18:34 | 只看该作者
<=> 是 Ruby 继承自 Perl 的 经典比较运算符,和 C 的 strcmp,Java 和 C# 的 compareTo,都是一个概念;直接写一个数字作为块的返回值是函数式编程泛型的风格,与之相对的是 return +1——命令式编程风格

评分

参与人数 1星屑 +200 收起 理由
六祈 + 200 感谢你参与讨论~

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

6
发表于 2010-8-26 13:03:27 | 只看该作者
回复 逸豫 的帖子


    记得有这么一句(p205, Ruby on Rails 简介)
为我们程序员带来快快乐乐、没有胃溃疡的生活

我呆住了 O_o

点评

= =死君殿的新头像真美  发表于 2010-8-26 13:05
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
7
发表于 2010-8-26 15:07:28 | 只看该作者
Proc.new 产生的“过程”并不能在创建时的上下文消失后继续使用,所以并不满足闭包“随时调用满足一定功能”的特性;与之相对的是 Kernel.lambda,这家伙产生的是真·闭包

另外,return 在 Proc.new 里并不表示从 Proc 中返回,而是当做在 Proc.new 创建时的上下文中 return,如果创建时不是在方法内部,就会发生异常(LocalJumpError);而在 lambda 里 return 则是从闭包返回

其实 Ruby 1.8 里关于闭包还是有个问题——Kernel.proc 的文档说的是和 Proc.new 同等,其实却是和 lambda 同等,显然是一个失误,可喜的是在 1.9 里修复了,可悲的是 RM 用的是 1.8,用的时候如果涉及到上下文和 return,就需要注意下

next 则无论是在哪种块中都是从块中返回;break 只能在 lambda 中使用,也是从闭包返回

另附一个蛋疼的这段代码的 Lisp 风格版:
  1. (sort! @states
  2.        (lambda (a b)
  3.         (let ((state_a (nth a $data_states))
  4.               (state_b (nth b $data_states))))
  5.         (cond ((> (rating state_a) (rating state_b)) -1)               
  6.               ((< (rating state_a) (rating state_b)) +1)
  7.               ((> (restriction state_a) (restriction state_b)) -1)
  8.               ((< (restriction state_a) (restriction state_b)) +1)
  9.               (t (compare a b)))))
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-4-7 19:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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