变量名必须是单个实体,不含空格。必须以字母,或下划线开头,必须只包含数字,字母,下划线,并且是区分大小写。

1.1    变量分类

1.1.1 局部变量

以小写字母或下划线卡头。

局部变量也就是基本的变量,在变量定义的相同地方使用。

1.1.2 全局变量

以$开头。

1.1.3 类变量

类变量就是在类定义中用@@开头的变量。

类变量是用于存储类的全局信息,它只属于类,不同与类实例变量(即用@开头定义的变量)每一个类的对象都有一份数据。 类变量是可以被继承的,也就是说如果我们派生一个子类,那么在子类中是可以访问父类的类变量的。类变量在访问前必须赋值。子类和父类共享一份数据,对一个类的修改会反映到另一个类中。

1.1.4 实例变量

对象中定义,以@开头。

类的类实例变量是在类的类方法中或方法外边(不能在实例方法中,那是类的实例变量)以@开头定义的变量,这样定义的变量值属于类对象本身,不能够被子类继承。如果要定义需要和子类共享的类全局数据,使用类变量;但是如果要定义仅供类本身使用的类全局数据可以使用类实例变量。还有一点需要注意的是,和类变量不同的是类实例变量不要求访问前必须赋值,不赋值它的值就是nil

1.1.5 常量

以大写字母开头。

1.1.6 变量输出

使用"#{var}"输出。

例:



class Demo
$Global="Global!" #全部变量
NAME="name" #常量
@@sex=1 #类变量
attr_accessor :nickname #用symbol定义的实例变量访问器

def initialize()
@name="Tom!" #类实例变量
end

def get_sex
puts @@sex
end

def test()
num1 = 123 #局部变量
num2 = 456
puts num1
puts "num1+num2=#{num1+num2}"
puts @name
end
end

puts $Global
puts Demo::NAME
demo = Demo.new
demo.test
demo.get_sex
demo.nickname = 'jack'
puts demo.nickname