在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 

http://rubylearning.com/satishtalim/tutorial.html