新人学ruby---ruby 变量

刚开始接触ruby,如果有误望提出!


1.全局变量

全局变量以 $ 开头,未初始化时默认的值是nil,给全局变量赋值时会改变全局的状态,所以一般不建议使用全局变量。

例子:

# 定义一个全局变量$quanju
$quanju = 10

class BianLiang1
#   定义个方法 打印出全局
  def print_quanju
    puts "打印全局变量值:#$quanju"
  end

#   修改全局变量
  def update
    $quanju = 20
    puts "打印修改后的全局变量值:#$quanju"
  end
end


class BianLiang2
  def print_quanju
    puts "打印全局变量值:#$quanju"
  end

  #   修改全局变量
  def update
    $quanju = 30
    puts "打印修改后的全局变量值:#$quanju"
  end
end

bian1 = BianLiang1.new
bian1.print_quanju
bian1.update

bian2 = BianLiang2.new
bian2.print_quanju
bian2.update
bian1.print_quanju

执行结果:

打印全局变量值:10
打印修改后的全局变量值:20
打印全局变量值:20
打印修改后的全局变量值:30
打印全局变量值:30

2.实例变量

实例变量以 @ 开头。未初始化时默认值是nul。实例变量是每个实例独有的,不予其它实例共享,既自己改变了,其它实例不受影响。
实例变量是私有的,无法在类外直接引用,但是可以通过类方法和实例方法访问。

例子:

class Variable
  @shili01 = 10
  @shili02 = 20

  def shili
    puts @shili01 = 30
    puts @shili02
    puts @shili03 = 50

  end

  def self.t
    puts @shili01
    puts @shili02
  end

end

object = Variable.new
object.shili
puts "=======分割线======="
Variable.t

执行结果:

30
nil
50
=======分割线=======
10
20

注意:前后定义的两个@shili02 是两个不用的实例变量。第一个是类对象的实例变量,第二个是类的实例对象的实例变量。

3.类变量

类变量名以 @@ 开头,必须初始化才能在方法定义中使用。类变量被这个类所有,实例对象共享。
类变量是私有的,再类外无法直接访问,可以通过类方法和实例方法访问。

例子:

class Variables
  @@lei = 0

  def add
    @@lei += 1
    puts "类变量值:#@@lei"
  end
end

v = Variables.new
v.add

v2 = Variables.new
v2.add

结果:

类变量值:1
类变量值:2

4.局部变量

局部变量以小写字母或者下划线开头。局部变量的作用域从class、module、def、do到相应的结尾或者从左大括号到右大括号。
当调用一个未初始化的局部变量时,它被解释为调用一个不带参数的方法。
局部变量不可以在内部类或者子类中访问;类中的方法不可以访问该类中定义的局部变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值