blackanger 2007-8-14 22:49
Ruby陷阱[CHM格式].中文
[attach]233[/attach]
from Ruby trap :
----------------------------------------------------------------------------------传说中的分界线------------------------------------------------------------------------
[b]1。and / or的优先级[/b]
[code]
p :a if true || false && false
p :b if true or false and false
#=> :a
[/code]
&&的优先级高于||,但是or和and的优先级则相同,所以应该写成:
[code]
p :b if (true or false) and false
[/code]
[b]2。Ruby trap在Ruby语法有变之后,把陷阱又变成了新的陷阱。比如:[/b]
[code]
obj = Object def obj.Foo
p "ok"
end
def Bar
p "ok"
end
[/code]
我们用::符号来引用内建类或原始类是不会出错的。比如:
[code]
def str
::String.new("hello")
end
irb(main):028:0> str
=> "hello"
[/code]
但是当我们用::来调用以大写字母开头的方法则会被判为常数,引发异常:
[code]
::Foo # => uninitialized constant Foo::Bar (NameError)
[/code]
避免这样的错误就得这样写:
[code]
obj::Foo()
"ok"
=> nil
[/code]
注意:不支持obj::Foo这样的调用
[b]3。有无空格已经没有差异 [/b]
b = a+2
b = a +2
是相等的,第二个不会被解释为a(+2)
-------------------------------------
[color=green]
书评:
Ruby trap有点过时了,看的时候必须的结合最新版本的ruby来实践才行,避免造成误导!
[/color]
[[i] 本帖最后由 blackanger 于 2007-8-15 12:35 编辑 [/i]]
blackanger 2007-8-15 10:20
书评第一弹!
bluebillow 2007-9-29 09:41
应该比较有用个
学习一下
wadyweiwei 2007-10-9 14:38
没看过看看先!谢谢楼主希望以后能提供更好的资料!
xujin1402008 2008-5-25 17:45
感谢分享