局部变量与全局变量
在前面的示例中,我将值赋给了变量,例如 subtotal
、tax
和 taxrate
。这些以小写字母开头的变量都是局部变量(Local variables),这意味着它们只存在于程序的特定部分。换句话说,它们被限制一个定义明确的作用域(scope)内。这是一个实例:
variables.rb
localvar = "hello"
$globalvar = "goodbye"
def amethod
localvar = 10
puts(localvar)
puts($globalvar)
end
def anotherMethod
localvar = 500
$globalvar = "bonjour"
puts(localvar)
puts($globalvar)
end
这里有三个名为 localvar
的局部变量,一个在 main 作用域内被赋值为 “hello” ;其它的两个分别在独立的方法作用域内被赋值为整数(Integers):因为每一个局部变量都有不同的作用域,赋值并不影响在其它作用域中同名的局部变量。你可以通过调用方法来验证:
amethod #=> localvar = 10
anotherMethod #=> localvar = 500
amethod #=> localvar = 10
puts( localvar ) #=> localvar = "hello"
另一方面,一个以 $ 字符开头的全局变量拥有全局作用域。当在一个方法中对一个全局变量进行赋值,同时也会影响程序中其它任意作用域中的同名全局变量:
amethod #=> $globalvar = "goodbye"
anotherMethod #=> $globalvar = "bonjour"
amethod #=> $globalvar = "bonjour"
puts($globalvar) #=> $globalvar = "bonjour"