gpt4 book ai didi

Ruby Struct 实例找不到名称中包含 '?' 的属性

转载 作者:行者123 更新时间:2023-12-04 05:13:02 25 4
gpt4 key购买 nike

如果我创建一个带有包含问号的属性的 Struct,则该类的任何实例都将无法找到该方法。例如

    Test = Struct.new(:value, :value?)
t = Test.new(true,true)
t.value
=> true
t.value?
NoMethodError: undefined method `value?' for #<struct Test value=true, :value?=true>

有什么想法吗?我正在使用 Ruby 1.9.3-p286。

最佳答案

您必须承认 Ruby 中的某些方法名称是特殊的。例如,如果您定义了方法

o = Object.new
def o.kokot= n
return n + 1
end

并打电话
o.kokot 1
#=> 1

结果仍然是 1,而不是您预期的 2。这是 =的特点登录方法名称。在您的结构的情况下,问号似乎也有这样的特殊性,这会阻止您通过调用来检索值:
t.value?

你必须打电话
t[:value?]

就这样,祝你有美好的一天。

关于Ruby Struct 实例找不到名称中包含 '?' 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14658143/

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