ROR Api Dock总是以方法的语法开始。我的例子是link_to:
link_to(name = nil, options = nil, html_options = nil, &block) public
我的问题是关于"name=nil"
或"something = nil"
,我在大多数命令中都看到了这一点。
第二个例子:url_for(options = nil)
有人能解释一下这件事的意义吗?或者它想说什么。。这是否意味着该选项是可选的?
为什么它很重要。。
Ruby与JavaScript或PHP不同,它强制使用调用方法的参数数量:
def foo(a,b)
end
因此,如果您在没有参数的情况下调用foo
,Ruby将引发一个异常ArgumentError: wrong number of arguments (0 for 2)
。
通过设置默认值,可以将参数标记为可选:
def foo(a = nil, b = nil)
end
调用不带参数的foo
将不再引发错误。
这通常用于创建可以接受列表参数或哈希的方法:
def foo(a = nil, b = nil, opts = {})
opts.each do |k,v|
puts "#{k} : #{v}"
end
end
至于Ruby为什么这么做,这是一个语言设计决定。在许多情况下,它确实有助于追踪简单的错误,因为你只是传递了错误的参数。在一种不强制执行这一点的语言中,你会从方法内部得到一个类型或未定义的错误,这很难找出根本原因。IMHO Matz说得对。