通常情况下你应该在使用变量前先给变量赋值,或者说初始化这个变量。在某些情况下,你也可以不初始化变量,这在Ruby中是允许的,不过必须遵循一定的规则:
- 类变量:对于类变量,在使用之前你必须给它赋值,否则你会得到一个NameError的异常。
- 实例变量:如果你使用了一个未初始化的实例变量,你会得到一个nil值,通常这不是好的编程习惯,如果你打开Ruby的-w选项你会得到一个警告信息。
- 全局变量:和实例变量一样,如果你使用了未初始化的实例变量,你会得到一个nil值。
- 局部变量:局部变量比较复杂,因为和其他变量不同,它没有一个明确的符号标记,标明它是一个局部变量还是一个方法调用。如果Ruby解析器识别到一个变量被赋值了,那么它知道这是一个局部变量而不是方法,如果没有赋值操作,Ruby会把它当作是一个方法调用,如果没有这样一个方法,哦,你会得到一个NameError异常。通常,如果一个局部变量没有明确的赋值,Ruby会认为它的值是nil。比如:
a = 0.0 if false # 这个赋值操作永远不会执行。
print a # 打印nil,即使存在这样一个变量,但是它的值为nil。
print b # NameError: 不存在的变量或者方法。
No comments:
Post a Comment