新手问题 刚刚在看判断奇偶数的源代码,前面加惊叹号有什么意思

metal · 2012年09月03日 · 最后由 jjym 回复于 2012年09月04日 · 4038 次阅读
def odd?
  @odd_or_even = !@odd_or_even
end

不明白前面加惊叹号有什么意思。和后面加惊叹号有什么有区别吗。

自身的值取反,于是就一直 odd even odd 轮换下去……

原来是这么实现的

放到这个地方是取反,如果放到后边,有些函数是对变量强制改变

#1 楼 @Rei #2 楼 @jyz19880823

我现在觉得 ruby 有些东西很抽象。不容易理解。谢谢两位解答。

反取是什么不是很明白。放到后面很容易理解。放到前面就是 boolean 值了。

一个惊叹号是 false,两个是 true,三个又是 false…… 以次类推。

➜  ~  irb
1.9.3-p125 :006 > a = false
 => false 
1.9.3-p125 :007 > b = ''
 => "" 
1.9.3-p125 :008 > b = !a
 => true 
1.9.3-p125 :009 > a
 => false 
1.9.3-p125 :010 > b
 => true

#3 楼 @metal 取反的概念有这么难理解吗。。。

真取反就假,假取反就真呗。

#3 楼 @metal 找本书看下数据类型,基本存在的就是 true,nil 就是 false

#3 楼 @metal 各种语言都会这么写吧

不过 ruby 的好处是可以省一句初始化,未声明的变量默认 nil,而 nil 可以视作 false

靠,我这看为什么是 C 语言实现的

#7 楼 @jjym 我不清楚呀。我找到这里的时候已经是数据库方面的啦。我是在源代码里搜索 odd 和 even 这些,看到相关就看看这样。

我这直接 pry 看是 C 实现。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号