gpt4 book ai didi

ruby - Ruby 中的虚拟属性

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

我正在阅读一个 ruby​​ 教程并尝试使用了解虚拟属性。这是教程中显示的示例。

class Spaceship
def destination
@autopilot.destination
end

def destination=(new_destination)
@autopilot.destination = new_destination
end
end

ship = Spaceship.new
ship.destination = "Earth"
puts ship.destination

根据教程,理想情况下这段代码应该返回 Earth,但我遇到了以下错误。

class.rb:7:in `destination=': undefined method `destination=' for nil:NilClass (NoMethodError) from class.rb:12:in `<main>'

很抱歉,无法识别丢失的部分。

最佳答案

您需要为您的@autopilot 变量分配一些东西。

像这样的东西应该可以工作:

class Spaceship
def initialize
@autopilot = Struct.new(:destination).new(nil)
end

def destination
@autopilot.destination
end

def destination=(new_destination)
@autopilot.destination = new_destination
end
end

但是如果你想添加一个虚拟属性,然后将值保留为一个简单的实例变量,如下所示:

class Spaceship
def destination
@destination
end

def destination=(new_destination)
@destination = new_destination
end
end

关于ruby - Ruby 中的虚拟属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27640051/

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