ruby语法小记-2四、Hash1、类似json2、定义方式map {:one 1, :two2}key可以写成"one",但是不
ruby语法小记-2
四、Hash
1、类似json
2、定义方式
map = {:one=> 1, :two=>2}
key可以写成"one",但是不如:one这种symbol方式高效。因为比较两个符号的相等性比字符串
高效很多。
3.k/v表的最后允许",",如m
map = {:one=> 1, :two=>2,}
4.java中所有类都有的hashCode,在ruby中对应为object_id
5.判断是否包含,include
五、区间range
1、定义方式
a = 1..5
2.include方法类似contains,member方法同。ruby1.9开始提供另一个选择cover
如range.include?testValue
1..5.include?2 #return true
六、符号Symbol
1.定义方式:通过在标识符或者字符串前面加上冒号的方式
a = :b
可以通过intern或者to_sym方法将String转化为一个Symbol,可以使用to_s方法或者其别名id2name将Symbol转换为String
2.size,length,[],~=比较符
七、对象
1、获得当前类的id,类似java中hashcode。clazz.object_id,或者clazz.__id__
2、获得某实例属于哪个类,clazz.class superclass
3、比较类 clazz.class = String or clazz.instance_of? String
判断是否为某类或者子类,用is_a或者kind_of,
Class类有===,等同于is_a
4、对象比较的方法中eq和==,与java这种刚好相反
5、条件相等型操作符(===)
大多数情况下,与==同义;某些关键类重写了===,如Range,Regexp,Class,Symbol
6、对象的顺序比较
7、类型的转换,与Java类似
try_convert用来判断是否可以进行隐式转换
8、类的复制 clone,dup,两者存在差异
9、冻结对象,对象以及状态属性等将不可改变,a.freeze a.frozen?
10、为防止sql注入,标记污染对象,a.taint, a.tainted?