方法签名末尾的&符将抓住并期待一个块.
def foo(bar, &block)
block.call (bar += 1)
end
Run Code Online (Sandbox Code Playgroud)
&符号也可以用这种形式调用to_proc,让你:address用符号调用方法(例子是从别处借来的)
@webs ||= Web.find(:all).index_by &:address
Run Code Online (Sandbox Code Playgroud)
快捷方式喜欢+=和-=方便.
不是运营商,而是Rails提供的另一种快捷方式.这将让你栏时,foo是要么nil?或false
a = foo || bar
Run Code Online (Sandbox Code Playgroud)
在"运算符"方面,我在这里找到了一个(非官方的)东西供参考:Ruby运算符
我发现splat运算符是最棘手的Ruby运算符之一:
它拆分数组:
a,b,c = *[1,2,3]
Run Code Online (Sandbox Code Playgroud)
或者构建一个数组:
*a = 1,2,3
Run Code Online (Sandbox Code Playgroud)
它也可以在case声明中使用:
first = ["one", "two"]
second = ["three", "four"]
case number
when *first
"first"
when *second
"second"
end
Run Code Online (Sandbox Code Playgroud)
它可以用作varargs的函数参数:
def stuff *args
args.join('|')
end
Run Code Online (Sandbox Code Playgroud)
由于它用于两者(拆分和创建数组),我总是必须在使用它之前检查语法.它可以用于很多目的(比如将哈希转换为数组),我觉得很难掌握.
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |