以下是我的方法级代码。
def create_todo_lists(options={})
options[:title] ||= "My todo List"
end
以下是我的传球方式。
create_todo_lists title: ""
我无法理解我的标题arg
如何在方法中使用。 任何人都可以向我解释该方法如何接受title参数任何人都可以编写相同的JS代码,我更了解JS
。
答案 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: "")
标题:“”和{title:“”}
类似。
标题:“”和:title => “”
非常相似。
您的方案中还有一个有趣的概念是
在Ruby中也很独特。
仅当左侧变量的值为false
或nil
时,此运算符才会将右侧值分配给左侧变量。
因此,在您的方案中,create_todo_lists
方法将Hash作为参数,但涵盖了Ruby
的几个非常重要的概念。
希望这会有所帮助。 :)