gpt4 book ai didi

ruby - 如何以简单的方式访问类 setter ?

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

如何在同一个类中轻松访问 setter?

假设我有这个电话:

# some_file.rb , create a new object
temperature = Measurement.new 'temperature', 36.6

还有一个模型:

# Measurements.rb , some model
class Measurement
attr_accessor :value, :type
attr_reader :device, :title, :label

def initialize type, value
# This one works, but not trigger the setter
@type = type
# And this one trigger setter
self.type = type
end

def type= new_type
# do something very important
end
end

这是否意味着我总是需要使用 self.var = 而不是 @var = 如果我想对这个变量使用 setter 而不在类(class)?是否还有其他区别,以及添加 setter 的更好方法?

最佳答案

是的,你总是这样。在 Ruby 中,并没有真正的 setter 这样的东西。只是一个以 = 结尾的方法。但是,由于语法歧义,您必须始终在 setter 前面加上对象和句点,否则 Ruby 将看到对局部变量的赋值。

换句话说,记住 @blah 是原始访问,永远不会触发方法(不完全正确,有一些日志记录和调试 hock 方法,但没关系)。

所以,如果您的 setter 真的那么重要,那就接受 self.blah= 吧。

关于ruby - 如何以简单的方式访问类 setter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13745876/

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