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 实现。。