有人能解释一下这个方法是如何接受参数的吗?



下面是我的方法级代码。

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

我是这样通过的。

create_todo_lists title: ""

我无法理解我的标题arg是如何在方法中使用的。谁能解释我的方法是如何接受标题参数谁能写一个等效的JS代码相同,我理解JS更好。

如果我们试着分析你的问题,特别是你的情况,有几个重要的概念。

  • 默认值

def create_todo_lists(选项= {})

options={}在这里表示,如果调用这个函数时没有传递任何参数,它将得到一个名为options的参数,该参数将是一个空哈希。

  • 可选括号

create_todo_lists title: "

调用create_todo_lists中的

时没有使用括号,因为在Ruby方法调用中括号是可选的,所以它是有效的语法,类似于

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

title: "}和{title: "}

是相似的。

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

title: " and:title => "

非常相似。

场景中另一个有趣的概念是

  • | | =操作符

在Ruby中也是非常独特的。只有当左侧变量的值为falsenil时,该运算符才会将右侧变量的值赋给左侧变量。

因此,在您的场景中,create_todo_lists方法获得哈希作为参数,但涵盖Ruby的几个非常重要的概念。

希望这对你有帮助。:)

你的方法正在接受一个哈希值

在您的示例中,您当前正在发送散列

{ title: '' }

options[:title] ||= "My todo List"正在检查key:title是否存在,如果它存在…什么也不做。如果不是,设置为"My todo List"

你传入了一个空字符串:title,它不等于nil。

所以你的例子什么也做不了。

你可以这样做:

create_todo_lists title: nil

create_todo_lists {}

create_todo_lists

所有这些将导致:

{ title: 'My todo List' }

这只是一个可选参数,默认为空散列。

这是Ruby世界中用来一次提供一堆可选参数的一个小技巧。在使用模板dsl时非常有用,这种方式可以为html tags等添加属性。

对于JavaScript的例子,我可能会引用这个答案:多个参数vs选项对象。除了options参数是可选的

相关内容

  • 没有找到相关文章

最新更新