Ruby on rails (对我来说)在Rails中使用方法很奇怪

Ruby on rails (对我来说)在Rails中使用方法很奇怪,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是rails新手,所以这个问题可能很愚蠢。 我见过很多这样的代码 method do |x| x.something x.blabla end 例如,来自migrate的一些代码片段 create_table :users do |t| t.string :name t.string :email t.timestamps end 这里发生了什么|传递t|以创建|表方法还是? 我无法计算出该|x |是传递给块的参数。这是Ruby的一个特

我是rails新手,所以这个问题可能很愚蠢。 我见过很多这样的代码

method do |x|
 x.something
 x.blabla
end
例如,来自migrate的一些代码片段

create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps
    end  
这里发生了什么|传递t|以创建|表方法还是?
我无法计算出该
|x |
是传递给块的参数。这是Ruby的一个特性,不是RubyonRails特有的

下面是一个非常做作的示例,说明如何实现接受块的函数:

# 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

实际上,您正在调用
每个
并向其传递两件事:一个数组(
my_array
)和一个要执行的代码块。在内部
each
在数组中的每个项上循环,并调用该项上的块。块接收一个参数
|i |
,当它调用proc:
proc.call(items[i])

可能重复的还:另外:如果确实没有任何可添加到现有答案中,则不要重复回答。