gpt4 book ai didi

ruby - 无法在 ruby​​ 中修改自身为整数

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

我正在寻找一种在 ruby​​ 中链接破坏性方法以将变量的值逐一更改的方法,但我收到错误提示 Can't change the value of self。这在 Ruby 中是不可能的吗?

guesses_left = 3

class Integer
def decrement_guess_count!
self -= 1
end
end

guesses_left.decrement_guess_count!

最佳答案

这是设计使然。它不特定于整数,所有类的行为都是如此。对于某些类(例如 String),您可以更改实例的state(这称为破坏性操作),但您不能完全替换对象。对于整数,您甚至无法更改状态,它们没有任何状态。

如果我们愿意允许这样的事情发生,就会引发大量难题。比如说,如果 foo 引用 bar1,我们将其替换为 bar2foo 应该继续指向 bar1 吗?为什么?为什么不应该?如果 bar2 的类型完全不同,bar1 的用户应该如何应对?等等。

class Foo
def try_mutate_into another
self = another
end
end


f1 = Foo.new
f2 = Foo.new

f1.try_mutate_into f2
# ~> -:3: Can't change the value of self
# ~> self = another
# ~> ^

我挑战你找到一种可以进行这种操作的语言。 :)

关于ruby - 无法在 ruby​​ 中修改自身为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712999/

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