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

Project1

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

[随意闲聊] 【Ruby】逻辑运算-if 成立条件

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
跳转到指定楼层
1
发表于 2014-10-18 02:08:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 寒冷魔王 于 2014-10-18 02:19 编辑

发布在该区在于本帖技术含量较低,以及技术讨论区人少。
  1. puts "nil" if nil
  2. puts "!nil" if !nil
  3. puts "true" if true
  4. puts "!true" if !true
  5. puts "!false" if !false
  6. for i in 0..10
  7. puts "#{i}" if i
  8. puts "!#{i}" if !i
  9. end
  10. puts "string" if ""
  11. p !nil
  12. p !false
  13. p 1<2
  14. p !0
  15. p !!0
  16. p false == 0 # 注意该行表明false值不为0
复制代码
if成立条件,if后表达式该表达式否定之否定的值为true。

输出:
!nil
true
!false
0
1
2
3
4
5
6
7
8
9
10
string
true
true
true
false
true
false
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-10-18 08:58:25 | 只看该作者
本帖最后由 taroxd 于 2014-10-18 09:03 编辑

你错了。

RUBY 代码复制
  1. obj = Object.new
  2.  
  3. # 定义 obj 的否定为 true
  4. def obj.!
  5.   true
  6. end
  7.  
  8. p obj   ? true : false   #=> true
  9. p !obj  ? true : false   #=> true
  10. p !!obj ? true : false   #=> false


RUBY 代码复制
  1. obj = Object.new
  2.  
  3. # 定义 obj 的否定为 obj
  4. def obj.!
  5.   self
  6. end
  7.  
  8. p obj   ? true : false   #=> true
  9. p !obj  ? true : false   #=> true
  10. p !!obj ? true : false   #=> true

点评

↓当时是用RMVA测的,现在用Ruby1.8试了一下,确实不行。  发表于 2014-10-19 10:33
调用也分!self和self.send("!"),self.!也有解析错误  发表于 2014-10-18 19:18
当然我指的是def !, define_method就百无禁忌了。。。  发表于 2014-10-18 19:17
重载!在1.9开始才支持,之前是一个解析错误  发表于 2014-10-18 19:17
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
3
 楼主| 发表于 2014-10-18 09:03:31 | 只看该作者
taroxd 发表于 2014-10-18 08:58
你错了。


233你真幽默~
照你这么改p !!obj当然是false了。
但是默认还是true。
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2014-10-18 09:06:04 | 只看该作者
寒冷魔王 发表于 2014-10-18 09:03
233你真幽默~
照你这么改p !!obj当然是false了。
但是默认还是true。

这个东西Ruby本来就让你改的嘛

说这么复杂干什么呢? 除了 false 和 nil,其余的所有对象在 if 条件中都判定为真。这样说不就好了嘛

点评

貌似独立开关例外···小小地修改下就能当变量用了···  发表于 2014-10-18 09:13
何必在意这些细节?1.nonzero? 的返回值还是 1 不是 true 呢  发表于 2014-10-18 09:11
你说的对哦,Ruby是动态语言。我只是按照C的思维走了一下。我想说1<2返回值true而不是1。  发表于 2014-10-18 09:08
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
5
发表于 2014-10-18 09:06:55 | 只看该作者
taroxd 发表于 2014-10-18 08:58
你错了。

第二个代码第8行,p obj 不是obj吗...

点评

原来是这样...谢谢版主大人指点...  发表于 2014-10-18 09:12
其实p !obj 也应该是obj...  发表于 2014-10-18 09:10
优先级问题。等价于 p (obj ? true : false)  发表于 2014-10-18 09:10
他想p !!obj 做个对比。  发表于 2014-10-18 09:09
聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-10-4 07:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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