在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
对象变量 @xx 局部变量 [a-z]xx 常量 [A-Z]xx 两个伪变量self和nil: self实际上是一个指向当前对象的全局变量,这个变量的值由解释器控制,我们只能读取,不能修改。 nil也是一个由解释器控制全局变量,不能进行赋值。 1. 全局变量 $xx 全局变量应该谨慎使用,因为它的作用域是脚本级,在当前会话中的任何位置都可以改变。 全局变量在初始之前访问的话 是nil 可以通过trace_var来监视全局变量的改变并绑定一个变量改变时做出响应的代码块。
trace_var :$abc, proc{print "$abc is now #{$abc.to_s}\n"}
上面就是使用trace_var注册了一个$abc改变时的事件,对于这种作为过程激发器的全局变量在ruby中通常被称为 活动变量 active variable。$abc = 2 还有一个特殊的全局变量,通常是系统变量,表示环境上下文信息的,列举如下 $$ Ruby解释器的进程ID $! 最近一次错误信息 $@ 错误产生的位置 $_ gets最近读到的字符串 $. 解释器最近读到的行数 $~ 子表达式组的最近一次匹配 $n 最近匹配的第n个子表达式 $= 是否区别大小写的标志 $/ 输入记录分隔符 $\ 输出记录分隔符 $0 Ruby脚本的文件名 $* 命令行参数 $? 最近一次执行的子进程退出状态 2 对象变量 @xx 对象变量的作用域在对象内部,初始之前访问的话,会得到一个nil。 Ruby的对象变量使用之前不用声明,直接使用即可,其实对象变量在第一次使用时被动态添加进对象,看下面的sample就知道了
class Sample
def setA @a = 1 end def setB @b = 2 end def show puts "print instance variables:" puts self.instance_variables puts "print end" end end s = Sample.new s.show #none s.setA s.show #only have @a s.setB s.show #only @a and @b 3.局部变量 [a-z_]xx 由小写字母和下划线开头,在第一次赋值前并不包含nil值,第一次赋值就像是一次类型声明,我想ruby解释器也是根据第一次声明来决定该变量的类型的。 局部变量的作用域是所在上下文 4 ruby的常量 [A-Z]xx 常量只能赋值一次,但Ruby当前版本赋值多次只会产生警告。 常量可以定义在类和模块里,可以通过::符访问 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论