ruby-on-rails 语法错误,意外的“=”,应为“)”

qjp7pelc  于 2023-05-08  发布在  Ruby
关注(0)|答案(1)|浏览(104)

我对Ruby和编程很陌生,我正在尝试写下面这个简单的函数

def sum_square(x=0, y, z=0)
    p x**2 + y**2 + z**2
end

sum_square(2,3)

我得到了这个错误语法错误,unexpected '=',expecting ')'
我想我可以在这里使用可选参数

yebdmbv4

yebdmbv41#

带有默认值的参数应该放在没有默认值的参数之后,或者正如Tom Lord在评论中所说的那样,可以“放在列表中的任何其他地方,只要它们都是一起定义的”。因此,如果您希望保持y强制性,则应该是类似于

def sum_square(y, x=0, z=0)
  p x**2 + y**2 + z**2
end

但在调用过程中可能会令人困惑,因此您可以切换到关键字参数:

def sum_square=(y, x:0, z:0)
  p x**2 + y**2 + z**2
end

# all these call are valid
sum_square(1) 
sum_square(1, x:2)
sum_square(1, z:2)
sum_square(1, x:2, z:3)

在注解中列出了更多可能的方法来实现这个函数,这些方法具有更一般的方法(对于使用*的任何数量的输入)或所有参数都被命名。

相关问题