推荐答案
在 Ruby 中,& 符号在方法参数和调用中有两种主要作用:
在方法参数中:
&符号用于将传递的块(block)转换为Proc对象。这样可以在方法内部显式地操作块。在方法调用中:
&符号用于将Proc对象或方法符号(Symbol)转换为块,以便传递给方法。
本题详细解读
1. 在方法参数中使用 &
当你在方法参数中使用 & 符号时,它会将传递给方法的块转换为 Proc 对象。这使得你可以在方法内部显式地操作块。
def my_method(&block)
puts block.class # 输出: Proc
block.call
end
my_method { puts "Hello, World!" }在这个例子中,&block 将传递给 my_method 的块转换为 Proc 对象,并存储在 block 变量中。然后你可以像调用普通 Proc 对象一样调用它。
2. 在方法调用中使用 &
当你在方法调用中使用 & 符号时,它会将 Proc 对象或方法符号转换为块,以便传递给方法。
2.1 将 Proc 对象转换为块
my_proc = Proc.new { puts "Hello, World!" }
my_method(&my_proc)在这个例子中,&my_proc 将 my_proc 转换为块,并传递给 my_method。
2.2 将方法符号转换为块
// www.javascriptcn.com code example def my_method(&block) block.call end def say_hello puts "Hello, World!" end my_method(&method(:say_hello))
在这个例子中,&method(:say_hello) 将 say_hello 方法转换为块,并传递给 my_method。
总结
&在方法参数中用于将块转换为Proc对象。&在方法调用中用于将Proc对象或方法符号转换为块。
这两种用法使得 Ruby 中的块和 Proc 对象之间的转换更加灵活和方便。