我对Ruby和编程很陌生,我正在尝试写下面这个简单的函数
def sum_square(x=0, y, z=0) p x**2 + y**2 + z**2 end sum_square(2,3)
我得到了这个错误语法错误,unexpected '=',expecting ')'我想我可以在这里使用可选参数
yebdmbv41#
带有默认值的参数应该放在没有默认值的参数之后,或者正如Tom Lord在评论中所说的那样,可以“放在列表中的任何其他地方,只要它们都是一起定义的”。因此,如果您希望保持y强制性,则应该是类似于
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)
在注解中列出了更多可能的方法来实现这个函数,这些方法具有更一般的方法(对于使用*的任何数量的输入)或所有参数都被命名。
*
1条答案
按热度按时间yebdmbv41#
带有默认值的参数应该放在没有默认值的参数之后,或者正如Tom Lord在评论中所说的那样,可以“放在列表中的任何其他地方,只要它们都是一起定义的”。因此,如果您希望保持
y
强制性,则应该是类似于但在调用过程中可能会令人困惑,因此您可以切换到关键字参数:
在注解中列出了更多可能的方法来实现这个函数,这些方法具有更一般的方法(对于使用
*
的任何数量的输入)或所有参数都被命名。