如何在Ruby中使用&x27;变量的属性读取器和属性写入器@@?
Ruby有这样一种方法,通过使用如下键来共享实例变量如何在Ruby中使用&x27;变量的属性读取器和属性写入器@@?,ruby,variables,Ruby,Variables,Ruby有这样一种方法,通过使用如下键来共享实例变量 attr\u访问器:v 属性读取器:v 作者:v 除了全局@变量对象外,如何使用此选项?每个类都可以使用与对象的每个实例共享的变量。如何创建acessor? 唯一正确的方法是 def zmienna=(a) @@zmienna=a 结束 Ruby中没有这样的东西。但写自己的也不难: 类模块 def mattr_写入器(*ATTR) attrs.每个do|attr| 定义_singleton_方法(:“#{attr}=”)do|val| 类变
attr\u访问器:v
属性读取器:v
作者:v
除了全局@变量对象外,如何使用此选项?每个类都可以使用与对象的每个实例共享的变量。如何创建acessor?
唯一正确的方法是
def zmienna=(a)
@@zmienna=a
结束
Ruby中没有这样的东西。但写自己的也不难:
类模块
def mattr_写入器(*ATTR)
attrs.每个do|attr|
定义_singleton_方法(:“#{attr}=”)do|val|
类变量集(:“@@{attr}”,val)
结束
结束
结束
def mattr_读卡器(*ATTR)
attrs.每个do|attr|
定义单例方法(attr)do
类_变量_get(:“@@{attr}”)
结束
结束
结束
def mattr_存取器(*ATTR)
mattr_读卡器(*ATTR)
mattr_编写器(*attrs)
结束
结束
Foo类;结束
Foo.mattr_存取器(:bar)
Foo.bar=42
Foo.bar#=>42
Foo.bar=23
Foo.bar#=>23
或者,您可以使用ActiveSupport,它已经提供了这些方法
然而,由于大多数样式指南不鼓励使用类层次结构变量,因此为它们设置访问器没有多大意义