ruby - 在 Ruby 中,(类的)实例变量必须首先在 "initialize"中定义才能工作吗?

标签 ruby oop

class Shape
    def initialize()
        @blah = ""
    end
end

或者...这行得通吗?

class Shape
    @blah = ""
    def initialize()

    end
end

此外,默认情况下,实例变量是公共(public)的还是私有(private)的?如何将它们设置为公开或私有(private)?

最佳答案

您的第二个示例将 @blah 初始化为类变量。它不能直接访问(它需要一个类访问器)并且在一个类的所有实例中都是相同的。

实例变量本质上是私有(private)的,尽管您可以使用 @foo.instance_variable_get("@blah") 访问它们。按照惯例,如果你想访问一个 @blah 实例变量,你会添加一个访问器。

class Shape
  attr_accessor :blah
end

这会让你说,例如,shape = Shape.new; shape.blah = "whee";放 shape.blah(你会得到“whee”)。

关于ruby - 在 Ruby 中,(类的)实例变量必须首先在 "initialize"中定义才能工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3554168/

相关文章:

ruby - 需要用 capybara(ruby) 在某个坐标点点击、按住并移动

当我们使用列表理解时,Python 会并行创建对象

ios - 这是一个好的编程习惯吗? if 条件是返回带有回调的 bool 的方法

php - 帮助学习 PHP 算法类(class)

java - 我应该选择什么方式来代替乘法重载?

ruby-on-rails - 如何让 Rails View 返回其关联的操作名称?

ruby-on-rails - 未初始化的常量 CarrierWave::Video

ruby-on-rails - Chef cloudera Recipe 找不到丢失的依赖项

c - 在C语言编程中使用oop

ruby - 允许对不同模块中的 Ruby 常量进行非限定访问