学习Java的变量声明时,我觉得局部变量、全局变量、实例变量、类变量很好区分,因为有不同的关键字修饰以及它所处的场景,一眼便知。而我看Ruby变量的时候,我的第一反应是,很明确,很清晰,但是当我看过这一部分之后,却不知道应该在何处使用。
或许只有在了解了各个类之后,自己也设计类的时候才能用的着这几种变量的区别吧,平时就写这么几行代码,所用到的都是局部变量,没有那种体会。
不过这几种变量各自的声明方式和不同,应该熟记于心,我觉的这是最起码的事情吧。
Ruby中,一个变量属于哪一种变量,是由变量名称所决定的;哈哈,跟Java中不太一样吧
1、局部变量
就是很普通的样子,不过开头不能是数字,只能以小写字母或下划线开头(为什么不能以 $ 这个符号开头呢?因为这个符号是由特殊意义的。)
2、全局变量
变量名以 $ 开头
3、实例变量
变量名以 @ 开头
4、类变量
变量名以 @@ 开头
5、虚拟变量
其实就是 true false 这些特殊值
和Java中一样的时,在写Ruby程序的时候也最好要减少全局变量的使用,因为全局变量用的多了,程序会越来越乱。
实例变量和类变量的这两种声明方式要记住,在自己编写类的时候会用得上
每一种变量的作用范围,从名字中就可以展示出来了,和Java中是一样的。
关于常量
跟Java中final关键词修饰的是一个意思,只能赋值一次,以后就不能修改了。
不过Ruby中没有这些关键字该怎么声明一个常量呢?
其实把首字母大写,它就是一个常量了,就是这样。所以一般的变量声明时,首字母必须要小写就是这个原因了。
比如:Ruby = 1
再次赋值时会报错:Ruby =2
warning: already initialized constant Ruby
warning: previous definition of Ruby was here
关于保留字
和Java中的关键字保留字一样,不可以用它们声明变量使用
具体的是哪些在一步一步的学习中,会慢慢的接触到,就一个个的记住了,不用刻意的去记。
变量命名的方法
命名需要多个单词组合而成时候,用 下划线 _ 分割或者是驼峰式命名
对象的同一性
所有的对象都有身份标识(ID)和值,ID可以通过object_id获得
判断两个对象是不是同一个对象 ,即ID是否相等,用equal?
注:Ruby中很多返回true或false的方法会有一个?
而如果判断两个对象所持有的值是否相等使用 == ,还可以用eql?
但是数值类中对方法 eql? 进行了重写
感觉上这个与Java中的equals和==正好不同,所以这里需要特别注意了。
写代码时要注意的
Ruby中不需要每局都以分号;结尾,因为Ruby是通过换行来区分的,为了使代码看起来更简洁,尽量避免使用分号了;
或许只有在了解了各个类之后,自己也设计类的时候才能用的着这几种变量的区别吧,平时就写这么几行代码,所用到的都是局部变量,没有那种体会。
不过这几种变量各自的声明方式和不同,应该熟记于心,我觉的这是最起码的事情吧。
Ruby中,一个变量属于哪一种变量,是由变量名称所决定的;哈哈,跟Java中不太一样吧
1、局部变量
就是很普通的样子,不过开头不能是数字,只能以小写字母或下划线开头(为什么不能以 $ 这个符号开头呢?因为这个符号是由特殊意义的。)
2、全局变量
变量名以 $ 开头
3、实例变量
变量名以 @ 开头
4、类变量
变量名以 @@ 开头
5、虚拟变量
其实就是 true false 这些特殊值
和Java中一样的时,在写Ruby程序的时候也最好要减少全局变量的使用,因为全局变量用的多了,程序会越来越乱。
实例变量和类变量的这两种声明方式要记住,在自己编写类的时候会用得上
每一种变量的作用范围,从名字中就可以展示出来了,和Java中是一样的。
关于常量
跟Java中final关键词修饰的是一个意思,只能赋值一次,以后就不能修改了。
不过Ruby中没有这些关键字该怎么声明一个常量呢?
其实把首字母大写,它就是一个常量了,就是这样。所以一般的变量声明时,首字母必须要小写就是这个原因了。
比如:Ruby = 1
再次赋值时会报错:Ruby =2
warning: already initialized constant Ruby
warning: previous definition of Ruby was here
关于保留字
和Java中的关键字保留字一样,不可以用它们声明变量使用
具体的是哪些在一步一步的学习中,会慢慢的接触到,就一个个的记住了,不用刻意的去记。
变量命名的方法
命名需要多个单词组合而成时候,用 下划线 _ 分割或者是驼峰式命名
对象的同一性
所有的对象都有身份标识(ID)和值,ID可以通过object_id获得
判断两个对象是不是同一个对象 ,即ID是否相等,用equal?
注:Ruby中很多返回true或false的方法会有一个?
而如果判断两个对象所持有的值是否相等使用 == ,还可以用eql?
但是数值类中对方法 eql? 进行了重写
感觉上这个与Java中的equals和==正好不同,所以这里需要特别注意了。
写代码时要注意的
Ruby中不需要每局都以分号;结尾,因为Ruby是通过换行来区分的,为了使代码看起来更简洁,尽量避免使用分号了;