我是rails的新手,所以这个问题可能很愚蠢。 我见过很多像这样的代码
method do |x|
x.something
x.blabla
end
例如来自迁移的一些代码段
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
这里发生了什么? | T |传递给create_table方法还是? 我不能理解
答案 0 :(得分:2)
|x|
是传递给块的参数。它是Ruby的一个特性,不是Ruby on Rails特有的。
这是一个非常人为的例子,说明如何实现接受块的函数:
# invoke proc on each element of the items array
def each(items, &proc)
for i in (0...items.length)
proc.call(items[i])
end
end
my_array = [1,2,3];
# call 'each', passing in items and a block which prints the element
each my_array do |i|
puts i
end
实际上,您正在调用each
并向其传递两件事:数组(my_array
)和要执行的代码块。内部each
循环遍历数组中的每个项目,并调用该项目上的块。该块接收单个参数|i|
,当each
调用proc proc.call(items[i])
时,该参数由{{1}}填充。