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?


猜你喜欢

转载自davidyao.iteye.com/blog/1167866