gpt4 book ai didi

ruby - Ruby中具有相同名称和不同参数的方法(方法重载)

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:06 29 4
gpt4 key购买 nike

我有这个代码:

def setVelocity (x, y, yaw)
setVelocity (Command2d.new(x,y,yaw))
end
def setVelocity (vel)
......
end

vel 是一个 Command2D 类,它有 3 个属性,是 Comparable 并定义了 + ,基本上是一个方便我管理这 3 个属性的类,所以我想在我的库内部使用它(不想让它们私有(private),要么给他们起奇怪的名字)。但是即使参数数量不同,Ruby 似乎也只保留最后一个 setVelocity。所以当我用 3 个参数调用 setVelocity 时,会说我只需要用一个参数调用该方法。

最佳答案

Ruby 并不真正支持重载。

This page提供更多详细信息和解决方法。基本上,您创建一个具有可变数量参数的方法,并适本地处理它们。

(我个人建议编写一种方法来识别两种不同的“伪造重载”,然后为每种重载编写一种方法,使用不同的名称来反射(reflect)不同的参数。)

或者,只需提供不同的名称以 :) 开头

关于ruby - Ruby中具有相同名称和不同参数的方法(方法重载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1108612/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com