ruby 语法
maxiaokun55
这个作者很懒,什么都没留下…
展开
-
Ruby之self,上下文
Ruby self在不同的环境中有不同的含义,这点和java的this不同,原因是java实际上只有一种环境--在class的实例方法定义中使用,代表访问这个方法参数自动传进的那个对象。而由于ruby作为一个完全纯净的面向对象语言,任何东东都是对象,方法是对象,类也是对象...,所以Ruby self就会有很多环境,区分不同环境的self含义才能更好的理解程序的含义。一、Top L原创 2014-01-23 00:44:24 · 1285 阅读 · 0 评论 -
Ruby 中方法作用域 public protected private
public 与 Java 中的类同。protected方法,可以被定义它的类和其子类访问,不能被类和子类的实例对象直接调用,但是可以在类和子类中指定给实例对象;Ruby关键字private方法,可以被定义它的类和其子类访问(这跟java很不同),但是私有方法不能指定对象。Ruby 中,不管是 private 还是 protected 方法,都可以被子类继承。 例子:原创 2014-03-25 22:28:44 · 1417 阅读 · 0 评论 -
ruby 之super和super()的区别
我们经常要在子类的initialize方法中调用super和super()。从语法上说super和super()是有微妙区别的。super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;super()带括号则表示调用父类的同名函数,但是不传入任何参数;演示代码如下: 1 class SParent 2转载 2014-02-13 10:47:12 · 1671 阅读 · 0 评论 -
Ruby China中method_missing和define_method剖析
很多人都与 method_missing 干柴烈火,但在并没有小心处理彼此之间的关系。所以,我想来探讨一下这个问题:** 我该怎么用 method_missing **什么时候该抵挡 method_missing 的诱惑首先,永远不要在还没花时间考虑你用得够不够好之前,就向 method_missing 的魅力屈服。你知道,在日常生活中,很少会让你以为的那样亟需 metho翻译 2014-02-13 10:48:48 · 1202 阅读 · 0 评论 -
ruby之三元运算符写法
ruby之三元运算符比if更为强大简洁。案例puts 1 这是最容易出错的就是我们会这样写 1 这是错误的语法,ruby识别不了。因为可以这样理解,从根本上来说这只是一个表达式。不存在一个表达式有两个puts。原创 2014-02-10 15:47:34 · 14164 阅读 · 0 评论 -
Ruby中“||=”符号
def current_user @current_user ||= session[:user_id] && User.find(session[:user_id])end短短一行代码,却含有很多逻辑,以前老是搞混,这里总结一下。这句代码相当于def current_user if @current_user return @current_原创 2014-02-10 11:35:21 · 1153 阅读 · 0 评论 -
Ruby 之 respond_to? 和 send 的用法
在ruby中,通过给对象发送消息,来完成对象的功能,比如 str.upcase ,就是给str发送upcase的消息,点操作符(.),就是用来给对象发送消息的,str接受到消息,然后执行与消息对应的功能。但是,某些时候,我们并不知道对象能响应哪些消息,比如下面的代码就会产生错误: > obj = Object.new> obj.talk转载 2014-02-10 14:13:13 · 896 阅读 · 0 评论 -
ruby 语法(ARGV,传参数)--读取文件档案
脚本读取的文字档案:ex15_sample.txtThis is stuff I typed into a file.It is really cool stuff.Lots and lots of fun to have in here.ruby脚本:filename= ARGV.first # ARGV获取传进来第一个的参数prompt原创 2014-01-25 10:35:21 · 6765 阅读 · 0 评论 -
ruby loop循环
loop是最原始的一个循环。counter = 0loop do counter += 1 print "Ruby" break if counter > 29end如果循环体内没有break的话将会一直循环下去,这点比较容易忘记。loop内可以有条件语句与next 关键字结合来判断是否跳到下一个循环。多行代码推荐do e原创 2014-01-24 15:57:28 · 2784 阅读 · 0 评论 -
善用 define_method
define_method 可以帮助我们动态的,快速的定义多个方法;比如有这样一个类:class Post attr_accessor :title, :content, :state def initialize(title, content, state = :draft) @title, @content, @state = title, content, stat翻译 2014-04-01 16:29:30 · 714 阅读 · 0 评论