- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以想象,当您希望某个属性只可读,或可写和可读时,而不是当您希望某个属性可写而不可读时。
在某些情况下,您可能想要读取某些属性但无法更改它们。例如,如果您有一个 Animal
类并想用名称、年龄和颜色对其进行初始化,您可以编写
attr_accessor :age, :color
然后为名字有
attr_reader :name
因为名字不会改变。猫可以变老或变色,但名称(为了这个问题)一旦分配就不应更改。
另一方面,我无法合理化您需要 attr_writer
(相对于 attr_accessor
或 attr_reader
).在什么情况下你会想写一些东西,但不想读它?什么类型的场景或情况需要 attr_writer
?
如果您能想到其他编程语言的场景,那是受欢迎的,但我的面向对象知识的直接范围是在 Ruby 中。
最佳答案
如果您想要一个普通的编写器和一个自定义的阅读器怎么办?如果 ivar
尚未设置,在调用读取器时通常希望记住默认值。
class Oof
attr_writer :rab
def rab
@rab ||= "rab, of course!"
end
end
oof = Oof.new
oof.rab # => "rab, of course!"
oof.rab = "zab"
oof.rab # => "zab"
关于ruby - 你什么时候使用 attr_writer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45593532/
我可以想象,当您希望某个属性只可读,或可写和可读时,而不是当您希望某个属性可写而不可读时。 在某些情况下,您可能想要读取某些属性但无法更改它们。例如,如果您有一个 Animal 类并想用名称、年龄和颜
我对 Ruby 的 attr_writer 感到困惑。我试图在数组中添加一个值,但遇到以下错误: Line 13: undefined method `test' for # (NoMethodErr
这个问题在这里已经有了答案: Why do Ruby setters need "self." qualification within the class? (3 个答案) 关闭 7 年前。 如果
这是我的模块: module A def self.data=(data) @data = data end end 我想改用attr_writer。在这种情况下可能吗? 最佳答案 您
如果我理解正确的话,Ruby 允许设置实例属性只有当它们声明为可写时(例如通过 attr_writer、attr_accessor 或自定义 setter 方法)。我注意到我可以在没有显式编写器方法的
我需要编写具有依赖关系的类。我来自 .NET 背景,在 .NET 中,我们主要使用构造函数注入(inject)来将类依赖项注入(inject)到类中。我四处阅读,发现大多数博客(或者至少是我看过的博客
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
这个问题在这里已经有了答案: Why do Ruby setters need "self." qualification within the class? (3 个答案) 关闭 7 年前。 这不
我正在使用 Ruby on Rails 3,因为我声明了一个包含很多变量的类,所以我会为这些类变量一次性声明所有“attr_reader”或“attr_writer” . 我试过了 class Per
新手提醒 我正在观看 Ryan Bate 的一个关于虚拟属性的 RailsCasts。他正在为博客平台上的一篇文章添加标签。 http://media.railscasts.com/assets/ep
Ruby 有这种方便快捷的方式来共享实例变量,通过使用像这样的键 attr_accessor :var attr_reader :var attr_writer :var 如果我可以简单地使用 att
我是一名优秀的程序员,十分优秀!