Ruby中的管道符号是什么?
我正在学习Ruby和RoR,来自PHP和Java背景,但我经常遇到这样的代码:
def new
@post = Post.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @post }
end
end
|format|
人在做什么?这些管道符号在PHP/Java中的等效语法是什么?
Ruby中的管道符号是什么?
我正在学习Ruby和RoR,来自PHP和Java背景,但我经常遇到这样的代码:
def new
@post = Post.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @post }
end
end
|format|
人在做什么?这些管道符号在PHP/Java中的等效语法是什么?
它们是屈服于区块的变量.
def this_method_takes_a_block
yield(5)
end
this_method_takes_a_block do |num|
puts num
end
输出"5".一个更神秘的例子:
def this_silly_method_too(num)
yield(num + 5)
end
this_silly_method_too(3) do |wtf|
puts wtf + 1
end
输出为"9".