在ruby中如何使用类级别的局部变量? (一个ruby新手的问题)
所以假设我有这个(不工作):
class User description = "I am User class variable" def print puts description end end
那么,我应该如何使用var描述,如何将其作为默认参数传递给方法,或者直接在方法中使用? 谢谢..
在您的情况下, description
只是局部变量。 您可以使用特殊字符@
, @@
, $
更改此范围:
a = 5 defined? a => "local-variable" @a = 5 defined? @a => "instance-variable" @@a = 5 defined? @@a => "class variable" $a = 5 defined? $a => "global-variable"
为了您的目的,我认为可能是通过这种方式使用
class User def initialize(description) @description = description end def print puts @description end end obj = User.new("I am User") obj.print # => I am User
您可以使用define_method
访问类范围。
class User description = "I am User class variable" define_method :print do puts description end end
> User.new.print
我是User类变量
=>无
虽然:)我不认为这是个好主意
要定义类变量,请使用@@
:
class User @@description = "I am a User class variable" def print puts @@description end end
实例变量必须以@为前缀,并且无法从外部访问。 类变量必须以@@为前缀。
第一次在代码中的任何位置使用此变量时,它将被初始化。 如果要从外部访问值:
attr_reader :description