当我在ruby 2.3.1p112上运行它时:
def test(x,*y,z = 1) puts x,y,zend
我收到了这条消息:
(repl):1: Syntax error,unexpected '=',expecting ')'def test(x,z = 1)
另一方面,当我改变参数y和z的位置时,它起作用.
def test(x,z = 1,*y) puts x,zend
为什么不能在sponge参数的右边使用这个可选参数?
实时代码:https://repl.it/CaXU/2
注意:这个问题与Optional argument after splat argument不同,因为该问题询问了一个散列可选参数,而这个问题要求一个简单的非散列可选参数.当它是一个可选的散列参数时,无法知道分配给散列和sponge参数的参数数量.虽然,在可选参数不是哈希的情况下,将一个元素分配给可选参数并将其余元素分配给sponge参数是有意义的.
解决方法 Ruby不允许含糊不清.这些案例在语法上被排除在外.当你传递两个参数时,它如何知道第二个参数是否应该是y的一部分,z没有传递,或者y应该为空,z是第二个参数? 总结以上是内存溢出为你收集整理的ruby – 为什么我不能在海绵参数的右边使用默认参数?全部内容,希望文章能够帮你解决ruby – 为什么我不能在海绵参数的右边使用默认参数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)