ruby对于变量的定义、作用域以及访问方法确实和我平常用的C#,javascript,java等复杂了些,而且相对来说有点难以理解。
最常用的是实例变量,定义的时候需要带上@符号,完全可以定义的同时即可使用,外部访问要么自定义方法来进行回馈,或者使用缩写代码块来表达:
attr_accessor: 变量名 :
其中attr_accessor可以更改为attr_reader或者attr_writer,分别代表只读和只写访问
注意上面是有两个冒号的!!
比较奇特的是,实例变量无法脱离方法进行声明和定义即不能类定义内方法外来进行声明和定义。
接着要说的是类变量。类变量通常可以定义声明在方法体外,但是必须带有@@这个前缀,若是想从外部进行访问,则必须声明相应的方法来访问。
再来谈谈类常量。长时间的c和c#代码阅读中,“常量名大写”一直是作为标准代码来要求的,但是ruby并没有这种要求,访问对于类名首字母有这样的要求。相比较类变量,常量的定义和声明不需要加上@这种前缀,而且也可以在类体里方法定义外,只不过外部访问的时候需要按照如下方式进行访问:
类名::常量名