新手求助学习中关于if和unless的问题

新手求助学习中关于if和unless的问题

我在学习if和unless时候看到一个例觉得有点疑惑,望前辈们指点。

问题:比如 a=50
puts "ok" if a>40 && a<60

把上面的换成unless应该是以下哪种才对?为何?
puts "ok" unless a<40 || a>60

puts "ok" unless a<40 && a>60

puts "ok" unless a<40 || a>60这种对,if和unless后面条件正好相反,将if后的条件非一下就是对应的unless后面的条件


[Copy to clipboard] [ - ]
可以从另外一个角度看
if/unless这一组运算符跟&&/||优先级是不一样的
&&/||优先级高于if/unless这个很重要,千万不能忽略
就||来说还需要关心他的shotcut问题
楼主尝试一下

[Copy to clipboard] [ - ]
unless等价于if not

[Copy to clipboard] [ - ]
首先谢谢各位的解答!

puts "ok" unless false || true
puts "ok" unless false || false

以上两条的结果都能显示 ok,对吗?
P=a && b
P=!!P(双重否定等于肯定)
!(a&&b)=!a||!b(摩根定律)
false || true恒等于true(排中律)
或者是真的,或者是假的,没有其他中间情况.这句话本身是真的.

false && true恒等于false(矛盾律)
因为没有什么东西既真又假."既真又假"这句话是假的.
这是计算机的内部逻辑.呵呵

[ 本帖最后由 axgle 于 2007-11-7 09:54 编辑 ]
引用:
原帖由 rijie 于 2007-11-7 09:36 发表
首先谢谢各位的解答!

puts "ok" unless false || true
puts "ok" unless false || false

以上两条的结果都能显示 ok,对吗?
unless 就是 not if.
所有使用unless的地方都可以使用if来进行替换,所以,如果觉得困惑,使用if就足够了。

btw: axgle的头像很帅,呵呵。