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