任何人都可以解释我该方法如何接受参数

时间:2014-03-19 19:56:39

标签: ruby ruby-on-rails-3

以下是我的方法级代码。

def create_todo_lists(options={})
    options[:title] ||= "My todo List"
end

以下是我的传球方式。

create_todo_lists title: ""

我无法理解我的标题arg如何在方法中使用。 任何人都可以向我解释该方法如何接受title参数任何人都可以编写相同的JS代码,我更了解JS

3 个答案:

答案 0 :(得分:1)

您的方法目前正在使用哈希

在您的示例中,您当前正在发送哈希

{ title: '' }

选项[:title] || ="我的待办事项清单"正在检查密钥的存在:标题,如果它在那里......什么都不做。如果不是,请将其设置为'我的待办事项列表'

您传入的空字符串为:title,不等于nil。

所以你的例子什么都不做。

你可以这样做:

create_todo_lists title: nil

create_todo_lists {}

create_todo_lists

所有这些将导致:

{ title: 'My todo List' }

答案 1 :(得分:1)

它只是一个可选参数,默认为空哈希。

Ruby世界中使用的一点点黑客一次性提供了一堆可选参数。在使用模板化DSL时非常有用,这样您就可以向html tags等添加属性。

至于JavaScript示例,我可能会参考这个答案:Multiple arguments vs. options object。除了options参数是可选的。

答案 2 :(得分:1)

如果我们试图分析您的问题,特别是您的案例,则几乎没有重要的概念。

  • 默认值
  

def create_todo_lists(options = {})

options={}这里表示如果在调用此函数时根本没有传递参数,它将获得一个名为options的参数,该参数将是一个emty Hash。

  • 可选括号
  

create_todo_lists title:“”

在这个行方法create_todo_lists被调用而不使用括号,因为括号在Ruby方法调用中是可选的,它是一个有效的语法,类似于

create_todo_lists(title: "")
  • 使用单键值对进行哈希 在ruby中,具有单个键值对的Hash也具有可选的括号,因此在您的情况下
  

标题:“”和{title:“”}

类似。

  • Hash的两种不同语法 Ruby在使用符号作为哈希键时有两种不同的语法,因此在您的情况下
  

标题:“”和:title => “”

非常相似。

您的方案中还有一个有趣的概念是

  • || =运营商

在Ruby中也很独特。 仅当左侧变量的值为falsenil时,此运算符才会将右侧值分配给左侧变量。

因此,在您的方案中,create_todo_lists方法将Hash作为参数,但涵盖了Ruby的几个非常重要的概念。

希望这会有所帮助。 :)