Ruby的动态特性

最近在看《Programming Ruby》这本书,刚刚接触Ruby,和Rails框架一起。这种绝对是对敏捷web开发的发展。

Ruby是一门动态语言,主要体现在:

  1. 变量不需要类型定义,直接使用。下面的代码,对于变量name不需要类型声明,直接定义。
    name = "Leo"
  2. 访问控制不是静态的,o(∩_∩)o 哈哈!这点我觉得蛮神奇的。因为方法的调用也是动态的,所以调用时才去查找方法的定义,然后再查询他的访问控制符,如果访问受限就会抛异常。这里我想静态语言这些事都是之前做好的,那么时间方面,Ruby会不会因为查找而运行时消耗更多的时间呢?(希望牛人给指点下)
  3. block,这是Ruby引入的一个新概念,不同于之前我所接触的代码块或是回调函数。block的定义是紧跟方法后,在代码中只和方法调用一起出现。最能体现动态性的是当遇到block的时候并不立刻执行其中的代码。Ruby会记住block出现时的上下文(局部变量、当前对象等)然后执行方法调用。在方法内部,block可以想方法一样被yield语句调用。

Ruby的神奇正是源于它的动态特性。