
ruby Tip
iteye_19474
这个作者很懒,什么都没留下…
展开
-
ruby super
ruby 中super和super()的区别我们经常要在子类的initialize方法中调用super和super()。从语法上说super和super()是有微妙区别的。super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;super()带括号则表示调用父类的同名函数,但是不传入任何参数;演示代码如下: class S...原创 2012-07-16 15:14:28 · 117 阅读 · 0 评论 -
ruby的动态性 回调和钩子方法
==回调方法和钩子方法回调和钩子是相当常见的元编程技术。在Ruby程序运行过程中,当特定的事件发生时,将调用这些回调和钩子方法。特定事件是指:* 调用一个不存的对象方法* 类混含一个模块* 定义类的子类* 给类添加一个实例方法* 给对象添加一个单例方法* 引用一个不存在的常量以上的每个事件,都可以编写一个回调方法,在该事件发生时,该回调方法被执行。这些回调方法是针对...原创 2012-06-13 18:20:05 · 226 阅读 · 0 评论 -
Ruby动态特性 可调用对象
可调用对象:可调用对象是一个对象,可以给该对象发送call消息,让它执行定义在其中(通常是在一个代码块中)的一些代码。Ruby中主要的可调用对象是[u]方法、Proc对象和lambda[/u]。Proc对象用一个代码块来实例化Proc类,可以产生一个Proc对象。pr = Proc.new {puts "Inside a Proc's block"}这里的代码块是不是会马上...原创 2012-06-13 17:37:34 · 117 阅读 · 0 评论 -
ruby的动态性 eval 家族
eval将字符串作为代码来求值,最直接,也是最危险的方法。编写一个让别人在运行时键入方法名的方法:print "Method name:"m = gets.chompeval("def #{m}; puts 'Hi!'; end")eval(m)如果在运行时,输入abc,那么eval求值的字符串是:def abc puts 'Hi!' end...原创 2012-06-13 16:39:34 · 190 阅读 · 0 评论 -
ruby的动态性
记住:Ruby的动态特性是以self身份的转换为基础的。单例类先来看看什么是单例类。大多数Ruby程序中发生的都涉及包含实例方法定义的类和模块:class C def talk puts "Hi!" endend使用下面的方法实例化和实例方法调用:c = C.newc.talk还可以直接给单个对象添加方法:obj = O...原创 2012-06-13 16:12:21 · 126 阅读 · 0 评论 -
ruby 内建类关系
我们看到Ruby里,可以直接写puts, print等,感觉像是命令动词一样,这和我们说的Ruby里一切都是对象有点冲突,其实我们理解了Ruby中Class, Module,Object,Kernel的关系,就明白了,通过下面的代码,我们知道Module是Class的父类.puts Class.ancestors => Class Module Object Kernel Basic...原创 2012-06-13 13:41:02 · 138 阅读 · 0 评论 -
区间问题
区间表示一种序列。在 Ruby 中,使用 ".." 表示闭区间,而使用 "..." 表示半闭半开区间,区别在于闭区间包含右端的值,而半闭半开区间则不包含。a = 1..9puts a.min # => 1puts a.max # => 9b = 1...9puts b.min # => 1puts b.max # => 8...原创 2012-06-12 11:47:28 · 107 阅读 · 0 评论 -
唯一实例
#当前方法的执行体puts "#{nil}"#NilClass的唯一实例puts "#{nil}"#TrueClass的唯一实例puts "#{true}"#FalseClass唯一实例puts "#{false}"#当前文件名puts "#{_FILE_}"#当前文件中的行号puts "#{_LINE_}"...原创 2012-06-12 11:33:05 · 119 阅读 · 0 评论 -
ruby 方法返回多个值
def LoveMovieAndSport(name) [name + 'Love StarWar',name + 'Love FootBar']endmovie,sport = LoveMovieAndSport("Jack")puts movie => Jack Love StarWarputs sport => Jack Love FootBar原创 2012-06-12 11:16:25 · 930 阅读 · 0 评论 -
常用小技巧
1 ruby hash to array {a: 1, b: '2'}.map{|k,v| "#{k} = #{v}"} # => ['a=1','b=2'] arr = [["a", "1"], ["b", "2"], ["c", "3"], ["d", "4"]] Hash[arr]原创 2014-02-17 10:01:37 · 156 阅读 · 0 评论