Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
DH
@ugoa
VIP
NO. 3078 / 2012-07-30

新加坡
9 Topics / 196 Replies
2 Followers
0 Following
64 Favorites
GitHub Public Repos
  • mockpipe 0

    mockpipe

  • terraform-zero-to-hero 0

    Master Terraform in 7 days using this Zero to Hero course.

  • datafusion 0

    Apache DataFusion SQL Query Engine

  • ChinaTextbook 0

    所有小初高、大学PDF教材。

  • gitdiagram 0

    Free, simple, fast interactive diagrams for any GitHub repository

  • awesome-cto 0

    A curated and opinionated list of resources for Chief Technology Officers, with the emphasis on s...

  • Daft 0

    Distributed data engine for Python/SQL designed for the cloud, powered by Rust

  • datafusion-ballista 0

    Apache DataFusion Ballista Distributed Query Engine

  • rust-magic-patterns 0

    Magical Rust patterns laid out and simplified

  • datafusion-sqlparser-rs 0

    Extensible SQL Lexer and Parser for Rust

More on GitHub
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • knewone 是怎样成为剁手站的? at March 31, 2013

    Shut up and take the money!!!

  • 社区新规则 - 新注册的用户 1 周内禁止发帖 at March 22, 2013

    24 小时就差不多了,足够新手尝试其他的解决问题的路径了。1 个月?黄花菜都凉了。

  • <<Ruby 元编程>>中的类宏怎么理解,还有帮忙解释下书中这段代码的执行过程。 at March 15, 2013

    #6 楼 @mayday 对的。还有,也不一定是在定义 class 时执行,在重新打开一个类对其修改时(像你这个例子)也是一样的。

  • <<Ruby 元编程>>中的类宏怎么理解,还有帮忙解释下书中这段代码的执行过程。 at March 15, 2013

    刚刚按照 LZ 的思路又看了看元编程,发现以前这个细节我也没注意到,对几个问题试着一一解释下吧。 1.拟态方法(Mimic Methods)和类宏(Class Macros)有什么区别? 拟态方法根据书中的定义,我觉得它主要的作用就是定义一个方法的不同调用形式,比如 puts 方法,你可以用传统的 puts("something"),也可以用puts "somethings",只是后者看起来不太符合我们的习惯,而看起来更像一个关键字,这就是所说的伪装。由此可以看出,Ruby 中的相当多的方法都可以被称为拟态方法的(Mimic Methods),包括下面的类宏。 而类宏,书中给出的解释很简单,Use a class method in a class definition. 就是在一个类定义中使用一个类方法,那么这个类方法就叫类宏。注意这里的关键字是 Use 调用,而不是 Define 定义。这就引出了类宏的主要使用场景:在一个类定义中,调用一个类方法,进而达到扩展这个类的目的。 按照 LZ 给出的例子,关键代码其实是

    deprecate :LEND_TO_USER, :lend_to
    

    depercate是一个类方法(在上面定义了),这里使用它来重新定义LEND_TO_USER这个明显需要重构的方法,从而达到了在原有代码中加入新功能而又不影响旧代码的目的。 而你也看出来了,上面这行代码中的 deprecate 方法刚好有符合拟态方法的特征,即“看起来”不像是一个方法调用。所以它既是拟态方法,又是类宏。 总结起来说,拟态方法其实是在描述一个方法调用的外在形式(加括号和不加括号),类宏就是在描述一个方法调用的目的(用来扩展类)和使用场景(必须在类定义中使用)。所以这两者是不矛盾的。 2.(1) 当实例化(Book.new)时有没有调用哪个方法? 没有。 Ruby 是解释型语言,他遇到 class 关键字时就进入了一个新的上下文环境,在这个新环境里他定义了 3 个新方法:两个实例方法和一个类方法。然后在遇到

    deprecate :GetTitle, :title
    deprecate :LEND_TO_USER, :lend_to
    deprecate :title2, :subtitle
    

    时,这里的代码被执行了,几个需要被重构的方法已经被重构成新方法了。举例说,这时 LEND_TO_USER() 已经被重构为

    def LEND_TO_USER(user)
        warn "Warning: LEND_TO_USER() is deprecated. Use lend_to()."
        lend_to(user, *args, &block)
    end
    

    所以对于 在调用 b.LEND_TO_USER("Bill") 时,具体是怎么运行的?,很简单,调用的就是上面这个方法:给一个 Warning,然后调用 lend_to("Bill") 。 一个普通的方法调用 。这样你明白了吧。

  • Eloquent Ruby 一书简介 at March 14, 2013

    这本书讲得多,但深度还是不如 Ruby 元编程,看完后者有种一通百通的感觉。

  • 2013 年 3 月 TIOBE 编程语言排行榜,Ruby 超越 Perl at March 12, 2013

    #8 楼 @goinaction 很多大公司的遗留项目都是 VB 写的,比如我手头的这个。:-(

  • 我发现我的个人主页上写着 "高级会员" at March 12, 2013

    3078,我也是啊? #3 楼 @huacnlee

  • “开源中国” 三折卖 RubyMine,这个工具如何? at March 08, 2013

    #14 楼 @leeboqiang 从你买入后一年内免费升级的,并且 5 的正式版已经出了,你现在就可以去升级,所以早买早赚到,我就是下手晚了,怨念..

  • “开源中国” 三折卖 RubyMine,这个工具如何? at March 08, 2013

    129 元的时候已经买了,眼瞅着这货从 69 元涨到 129 元又涨到现在的 189 元,估计是因为最近升级到了 5.0 正式版。

    建议购买,不同平台有不同的版本。但一个 Licence 全平台通用,装多少都没事,只要是个人用的。

  • 带详细中文注释的 Redis 2.6 源码 at March 07, 2013

    让我对 C 代码的畏惧大大减小,极有价值的工作!

  • Ruby China 开始用 Ruby 2.0 跑了 at March 02, 2013

    可否写个升级教程出来?

  • 有抱负的程序员应看的 10 个 TED 演讲 at February 28, 2013

    TED 给我帮助最大的一个演讲是来自一个 Google 员工的,题目是30 天一件新鲜事,虽然只有 4 分钟,但它已经帮助我养成了好几个好习惯---在半年之内!

    强烈推荐给大家。

  • [已结束][上海] 掌誉网络科技招聘靠谱 Ruby 程序员 - 你看了以后可能几天都睡不好觉的招聘帖 at February 24, 2013

    明年这时候还招不?。。

  • 这一年多的语言学习,真的被 rails 震撼了!!! at February 20, 2013

    #6 楼 @ruchee 你的博客真漂亮啊,请问是用什么做的?

  • [暂停,详见帖子内容] OSChina 蛇年新春巨献:JetBrains 开发工具全场 2 折! at February 01, 2013

    #17 楼 @pongyo 原来如此,看来还是要靠自觉啊。

  • [暂停,详见帖子内容] OSChina 蛇年新春巨献:JetBrains 开发工具全场 2 折! at February 01, 2013

    #15 楼 @qinix 哦,那很好啊,准备买了。thks.

    ---更新--- 我又找了下这个问题的答案,发现了这个, 感觉这里的解释很诡异啊!

    主要就是说一个 Licence 可以在任意平台上安装注册任意份,但每个 Licence 只能保证每次只有一个 RubyMine 实例在运行。

    我可以理解这种做法,可我很好奇它是怎么做到的呢?难道每次开启关闭 RubyMine 他们都可以感知到?就像登录注销一样。。

  • [暂停,详见帖子内容] OSChina 蛇年新春巨献:JetBrains 开发工具全场 2 折! at February 01, 2013

    请问下 RubyMine 是一个 Licence 全平台通用吗?还是每个平台都要买一遍?

  • 关于元编程 at February 01, 2013

    我看完了,感觉对 OO 有种大彻大悟的感觉。年后我准备把我我的心得总结一下贴到这里。

  • 如何找出自己 “关注”/“喜欢” 过的帖子呢? at January 30, 2013

    #5 楼 @huacnlee 我觉得是否可以把收藏功能做的更醒目一些?比如在那个便签图标右边增加收藏两个字,像关注和喜欢那样。

  • 新发明,婊子不能有朋友 at January 29, 2013

    表就是表,要么叫 Table。干吗要用**?一股老流氓气息扑面而来。要问问题就正经点,不要拿出一副自认为豪爽的“雅痞”作风。

  • 一行代码整垮 irb at January 18, 2013

    #11 楼 @iBachue #10 楼 @jasl 可能我用的是 Windows 上的 irb 1.9.3(工作环境没有 Linux),结果是它直接闪退了,没有看到抛出的异常。没有在 Linux 上测试,所以结果可能没 Windows 这么夸张,我回头再在 Linux 试下。

    我想突出的重点是 Ruby 方法执行的一个小细节,即 method_missing。大家明白就好了,@sailtsao 对参数的解释我以前也没注意到,学习了,感谢。

  • 一行代码整垮 irb at January 18, 2013

    #6 楼 @jasl 大哥你漏了一个重要的地方,在 method_missing 里面我还有一个自己编造的evil()方法啊(你可以自己随便编造一个),这个方法才是引发无限递归的罪魁祸首啊,具体我上面已经解释的很清楚了。

    #7 楼 @sailtsao 我就是看了 Ruby 元编程才想到这个例子的,你说的完全正确。

  • 一行代码整垮 irb at January 17, 2013

    #3 楼 @jasl 我只在 1.9 上试过的。

    #1 楼 @zlx_star 99% 正确,我完善一点细节啊:

    如果调用了一个对象上不存在的方法,Ruby 最终会执行每一个对象都会有的method_missing方法,由它抛出NoMethodError异常,。

    而 def method_missing; evil; end这一行代码重写并立即执行了 irb 默认 main 对象的method_missing方法,奥妙就在与这个重写的方法里我又胡乱编造了一个不存在的方法 evil(),irb 在执行 method_missing 时找不到这个 evil(),所以它只好再回去调用 method_missing,结果又遇到 evil()……以此循环往复,陷入无限死结中,最终结果就是堆栈溢出,irb 崩溃。

  • 苹果中国官网推出免息分期付款计划 at January 15, 2013

    不知道分期付款的优势在哪里,最终付的钱是不是比一次性付清还多一点吗?(利息)划不来啊,求教。

  • [上海] (Senior) Ruby Engineer-美资上市软件产品公司 [已结束] at December 04, 2012

    #27 楼 @candyccx 我一定会回来的~~~

  • [上海] (Senior) Ruby Engineer-美资上市软件产品公司 [已结束] at December 04, 2012

    国内这么多好机会啊,我坐不住了……

  • [杭州] 简阅科技招聘 Rails Developer (revised) [已结束] at November 27, 2012

    官网和这个网站有异曲同工之妙哦。 我不是来吐槽的,只是觉得这种设计很赞。

  • <转发自外刊 IT 评论网>如果编程语言是女人 at November 09, 2012

    HTML 是男人。

  • 老赵同学的一道编程题 at November 06, 2012

    看了他博客上其他几个答案,真心觉得 Ruby 废话少,懂程序员心思!

  • Prev
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • Next
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English