Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中使用&x27;变量的属性读取器和属性写入器@@?_Ruby_Variables - Fatal编程技术网

如何在Ruby中使用&x27;变量的属性读取器和属性写入器@@?

如何在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| 类变

Ruby有这样一种方法,通过使用如下键来共享实例变量

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,它已经提供了这些方法

然而,由于大多数样式指南不鼓励使用类层次结构变量,因此为它们设置访问器没有多大意义