摘要: ruby具有在运行时执行以字符串形式保存的代码的功能设施,eval族方法 。包括Kernel#eval,Object#instance_eval,Module#class_eval。 Kernel#eval 它是最直接的方法如下:1 p eval("2+2")2 3 eval("def m... 阅读全文
posted @ 2014-07-31 15:53 smallbottle 阅读(2206) 评论(0) 推荐(0) 编辑
摘要: 上一篇讲了ruby中的可调用对象proc和lambda,他们都是块转换成的对象。ruby中的可调用对象还有方法。通过使用method方法,并且以方法名作为参数(字符串或者符号),就可以得到一个方法对象。如下:1 class C2 def talk3 p "hello wo... 阅读全文
posted @ 2014-07-30 17:04 smallbottle 阅读(2223) 评论(0) 推荐(0) 编辑
摘要: ruby中将块转变成对象的三种方法 ruby中的大部分东西都是对象,但是块不是。那么,如果你想存下来一个块,方便以后使用,你就需要一个对象。ruby中有三种方法,把块转换成可以利用的对象。Proc.new lambda #kernel的方法proc #等价于Proc.new这三... 阅读全文
posted @ 2014-07-30 15:42 smallbottle 阅读(343) 评论(0) 推荐(0) 编辑
摘要: ruby中的方法调用都是 对象.方法 的形式,那么对象如何找到这个方法呢? 首先必须了解祖先链的概念,祖先链就是从一个类开始,到它的父类,再到父类的父类...一直到最终的起点(ruby中是BasicObject类)。这期间经历过的路径就是祖先链。 1混含模块和继承的方法查找 对于一个实例对... 阅读全文
posted @ 2014-07-29 17:30 smallbottle 阅读(1912) 评论(1) 推荐(1) 编辑
摘要: 在ruby中写顶层函数的时候,总会有一个问题,self是谁,这些方法是谁的,是什么方法。如下:1 p self2 3 p self.class4 5 def talk6 p self7 end8 9 talk 输出main,Object,main 由此可见,在写顶层代码的时候,rub... 阅读全文
posted @ 2014-07-28 11:31 smallbottle 阅读(716) 评论(0) 推荐(0) 编辑
摘要: ruby中的私有方法是指方法只能被隐含调用,不能被显示调用。而当没有显示接收者的时候,会把self当成接收者。因此,只能在自身中调用私有方法,这也是私有方法的调用规则。 ruby的私有方法机制目的是:使得你很容易将方法分为两种,外部世界可以访问的方法和外部世界不可以访问的方法。如下: 1 cl... 阅读全文
posted @ 2014-07-28 10:49 smallbottle 阅读(1809) 评论(0) 推荐(0) 编辑
摘要: 作用域(scope)指的是变量的可达性或可见性。不同类型的变量有不同的作用域规则。与self类似,作用域在程序的执行过程中也在不断的变化,也可以根据上下文推断出"谁在什么作用域中"。但是,self和作用域不是同一个东西,在self没有变化的时候,可以开始一个新的局部作用域,有时候,作用域和sel... 阅读全文
posted @ 2014-07-27 15:24 smallbottle 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 先看一道题,这道题是codewars上的一道题,我很早就看到了,但是不会写。等到又看到这道题的时候,我刚看完元编程那本书,觉得是可以搞定它的时候了。废话不多说,先看这道题,题目最开始是为JavaScript写的,但是也放在了ruby语言里面,这个没有关系。题目内容是有一个类Calc,通过链式方法... 阅读全文
posted @ 2014-07-22 12:07 smallbottle 阅读(1062) 评论(0) 推荐(0) 编辑
摘要: self,自己,在ruby中表示当前对象或默认对象。程序执行的任一时刻,有且仅有一个self。1.谁成为self,在什么位置成为self?要知道哪个对象是self,就必须知道当前的上下文。上下文主要有顶层上下文,类定义上下文,模块定义上下文,方法定义上下文。可以根据下图总结的内容进行self的判断。... 阅读全文
posted @ 2014-07-18 18:31 smallbottle 阅读(1900) 评论(0) 推荐(0) 编辑
摘要: 看了很多关于乱码的文章,总觉得不够清晰,看的云里雾里。在一本书上看到解释还比较清楚,摘下。计算机中,字符都是以二进制的数字来存储的,这种字符与数字对应的关系就被称为字符的编码。例如"A"对应的编码是65,这个65就是"A"的ASCII编码。从计算机的字符编码发展历史来看,大概经历了三个阶段。(1)第... 阅读全文
posted @ 2014-05-05 11:05 smallbottle 阅读(266) 评论(0) 推荐(0) 编辑