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

是否这样理解?
不管什么情况下,当 if 和 unless 互换的时候,不但条件中的操作符需要相反,逻辑符号 || 和 && 也得互换?!
a<40 && a>60


这个是false

不管a是啥,都可以输出ok
问题:比如 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才对
其实x||y的这样的,如果x为真,就不算y是否为真或假了,只有x为假时才进一步算y的真假.
这个语句我们可以用自然语句这样来描述
如果a小于或等于 或 大于或等于60时就不输出ok字符串.

我也是菜鸟,如有说错,请大家改下。
楼上的朋友,谢谢!

也就是说,这个unless的 || 案例中,只要两者中有一项为“真”,就不输出ok了,对吗?
也就是只有当unless的所有条件都为假时才输出。对吗?
引用:
原帖由 rijie 于 2007-11-6 16:48 发表
我在学习if和unless时候看到一个例觉得有点疑惑,望前辈们指点。

问题:比如 a=50
puts "ok" if a>40 && a
引用:
原帖由 rijie 于 2007-11-7 09:51 发表



谢谢楼上的朋友。那也就是说,只有后面一条才会返回 ok,对吗?
if 对true感兴趣
unless对false有意思...

这样说的 偶都疑惑了。。。。。

仅仅变换关键字 if 和 unless 他们表达的意思是正好相反的 如果你把后面的条件也随着变动的话 就要当心的。。。
自己逻辑不强 只用IF 。。
不用疑惑,其实他们表达的意思也一样,如drive2me所说,中文意思懂了就好理解了,if是如果,unless是除非,可以这样表达:如果这件事为真就输出;输出,除非这件事是假的,还是当这件事为真时才输出。
我认为用unless的目的就是蔽免使用if not,使代码规范。
反过来想简单一点,先看表达式的值,在选择条件逻辑判断符
怎么方便选什么吧,不要先决定用if还是unless,其实unless有时比if看起来还要逻辑清晰