1: 变量是对象的占位符或引用。
例如:
x=10
puts 10
这里是把10赋值给名为x的变量
2: 变量名必须是单个实体,不含空格。必须以字母,或下划线开头,必须只包含数字,字母,下划线,并且是区分大小写。
例如:
x 合法
8x 不合法(以数字开头)
this@test 不合法(含非法字符)
3:变量内插
在双引号内使用“#{变量名}”内插变量。
a=1
b=2
puts "#{a}+b=#{a+b}"
1+b=3
4:变量分类
变量类型 描述 示例
局部变量 以小写字母或下划线卡头 var _var
全局变量 以$开头 $var
类变量 类中定义,以@@开头 @@var
实例变量 对象中定义,以@开头 @var
常量 以大写字母开头 Var
解释:局部变量也就是基本的变量,在变量定义的相同地方使用。
类变量就是在类定义中用@@开头的变量。类变量是用于存储类的全局信息,它只属于类,不同与类实例变量(即用@开头定义的变量)每一个类的对象都有一份数据。 类变量是可以被继承的,也就是说如果我们派生一个子类,那么在子类中是可以访问父类的类变量的。类变量在访问前必须赋值。子类和父类共享一份数据,对一个类的修改会反映到另一个类中。
类的类实例变量是在类的类方法中或方法外边(不能在实例方法中,那是类的实例变量)以@开头定义的变量,这样定义的变量值属于类对象本身,不能够被子类继承。如果要定义需要和子类共享的类全局数据,使用类变量;但是如果要定义仅供类本身使用的类全局数据可以使用类实例变量。还有一点需要注意的是,和类变量不同的是类实例变量不要求访问前必须赋值,不赋值它的值就是nil
5: Ruby 变量并没有内在类型。作为一种动态解析执行的语言,其变量类型只在其执行期决定,我们也因此能改变变量所持有对象的类型。
a = 1
puts a.class #Fixnum
a = "s"
puts a.class #String
$Global = "Word!"
class Class1
@@I = 0
def initialize()
@name = "Tom!"
end
def test()
a = 123456
puts a
end
end
6: 作用域
在类或模块内的任意位置都可以访问此类或模块中定义的常量,在这之外,可以通过域作用符(::)访问。
class Demo
NAME="name"
def test
puts NAME
end
end
puts Demo::NAME
test.rb
class Demo
NAME="name"
$age="test"
def test
puts $age
end
end
main.rb
require "test.rb"
$age=1
puts $age