gpt4 book ai didi

ruby-on-rails - Ruby 的 block 语法是如何工作的?

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:51 28 4
gpt4 key购买 nike

我是 Ruby 的新手,正在尝试理解这种语法:

create_table :posts do |t|
t.string :title
t.string :content
t.string :likes
t.string :comments

t.timestamps null: false
end

我完全理解什么这段代码在做什么,但我不明白它是如何工作的。更具体地说,我明白 create_table 是一个方法,:posts 是一个参数,但我不明白其余的代码。

最佳答案

支持它:)

  1. create_table 是一个方法。 :posts 是作为参数传递的符号。括号是可选的,所以它看起来很奇怪,但它是一个简单的方法调用。

  2. doend 之间的所有内容都是一个代码块。这是将代码作为参数传递给方法的众多方法之一。代码块非常适合常见情况。其他类似(但不同)的方法是使用 Proclambda->

  3. |t|create_table 传递给代码块的参数。 create_table 将执行您的代码块,并将表对象作为单个参数传递给它。您选择将该对象命名为 t

  4. 现在在您的代码块中,您正在调用对象 t 上的方法 string 并将符号作为参数传递给它。你这样做了四次。同样,括号是可选的。

  5. 您正在同一对象 t 上调用 timestamps 方法。在这里,您向它传递了一个参数,这是一个值为 { :null => false } 的 Hash。

    • 在将散列作为最后一个或唯一的参数传递给方法时,不仅括号是可选的,花括号也是可选的。
    • null: false,是{ :null => false } 的快捷语法。

所以以上所有等价于:

create_table(:posts) do |t|
t.string(:title)
t.string(:content)
t.string(:likes)
t.string(:comments)
t.timestamps({:null => false})
end

关于ruby-on-rails - Ruby 的 block 语法是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37173796/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com