gpt4 book ai didi

ruby - 定义一个带参数的 `... = ` 类型的方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:32 26 4
gpt4 key购买 nike

可以像这样以 ... = 格式定义方法:

class A
def f= x
puts x
end
end

A.new.f = 5

但是是否可以用这种格式定义一个带有参数的方法,以便它可以像下面这样使用?

A.new.f(a, b, c) = 5

编辑

您可以使用 []=

执行此操作
class A
def []= x, y, z
puts x, y, z
end
end

A.new[1, 2] = 3

这是特例吗?

最佳答案

A.new.f(a, b, c) = 5

是语法错误,所以肯定不是(这也没有意义;)

[] 只是 .send(:[]=, ...) 的糖分,它只是带有奇特名称的 setter。

您可以定义带有多个参数的 setter,但使用它的唯一方法是通过

A.new.send(:f=, "first", "second")

因为解析器不允许像 A.new.foo = "first", "second"这样的语法。

关于ruby - 定义一个带参数的 `... = ` 类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561404/

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