查看: 2286|回复: 3

[已经解决] 为什么RGSS2方法的参数不可以包含and和or?

[复制链接]
梦石
0
星屑
1944
在线时间
404 小时
注册时间
2015-8-30
回帖
322
发表于 2016-1-28 19:32:47 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 有丘直方 于 2016-1-29 11:41 编辑

有的方法(函数)需要一些真伪值的参数,真伪值也可以用and或者or来连接但是为什么方法中的参数不可以带有这些?而且我已经考虑到了优先级的问题,特意加上了括号。
上面说的可能不够形象,来举个例子。
  1. def 一个垃圾函数(一个垃圾参数)
  2.   print "垃圾是对的!" if 一个垃圾参数 == true
  3.   print "垃圾是错的!" if 一个垃圾参数 == false
  4. end

  5. 一个垃圾函数((1 + 1 == 2) and (2 + 2 == 4))
  6. exit
复制代码
这个代码用来测试。照道理说应该会显示出“垃圾是对的!”但是会显示出错误。
为什么呢?难道方法的参数真的不能有and和or吗?

点评

是一个垃圾函数还是一个垃圾参数?  发表于 2016-1-29 09:30
小仙女一枚~

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2016-1-28 20:22:31 | 显示全部楼层
运算符优先级问题,加括号,或者用 && 和 ||
回复

使用道具 举报

梦石
0
星屑
1944
在线时间
404 小时
注册时间
2015-8-30
回帖
322
 楼主| 发表于 2016-1-28 20:27:00 | 显示全部楼层
喵呜喵5 发表于 2016-1-28 20:22
运算符优先级问题,加括号,或者用 && 和 ||

已经加了括号。——话说&&和||意思与and和or有什么不同
小仙女一枚~
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2016-1-28 20:31:07 | 显示全部楼层
有丘直方 发表于 2016-1-28 20:27
已经加了括号。——话说&&和||意思与and和or有什么不同
  1. 一个垃圾参数(((1 + 1 == 2) and (2 + 2 == 4)))
复制代码
and/or 不同于 &&/||
  1. surprise = true and false # => surprise is true
  2. surprise = true && false  # => surprise is false
复制代码
最佳实践
只使用 && / || 运算符。
详情
and / or 运算符的优先级比 && / || 低
and / or 的优先级比 = 低,而 && / || 的优先级比 = 高
and 和 or 的优先级相同,而 && 的优先级比 || 高
我们来给上述示例代码加上括号,这样就可以明显地看出 and 和 && 在用法上的不同之处了。
  1. (surprise = true) and false # => surprise is true
  2. surprise = (true && false)  # => surprise is false
复制代码
也有这样的说法:and / or 用于流程控制,而 && / || 用于布尔型运算。但我认为:不要使用这些运算符的关键字版本(and / or / not),而使用更为清晰的 if 和 unless 等。更加明确,更少困惑,更少 bugs。
延伸阅读:Difference between “or” and || in Ruby?(http://stackoverflow.com/questio ... ween-or-and-in-ruby)

点评

谢谢(就表示感谢就不开新的楼层了)  发表于 2016-1-28 20:33

评分

参与人数 1梦石 +1 收起 理由
丿梁丶小柒 + 1 我很赞同

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部