浏览 350 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-05-28 关键字: ruby quiz
Ruby每周一测 - Ruby Quiz 是Ruby Talk邮件列表上的一个持续了很长时间活动,每周有一个小题目被提出来,然后大家进行解答讨论。Amazon上还有相关的书: Best of Ruby Quiz。我尝试挑选其中的一些题目进行翻译,做一个每周一测系列,欢迎大家参与讨论。
-----题目分割线----- 命令行操作通常都会支持缩写,这周的Ruby Quiz要实现一个支持方法名缩写调用机制,举具体例子来看,假设一个Mine对象有step, next, stop, exit 4个方法,我们用abbrev操作定义这4个方法可以被缩写调用: class Mine abbrev :step, :next, :stop abbrev :exit end 如下调用将会产生: Mine.new.e # 调用exit方法 Mine.new.st # 因为step和stop都符合st这个缩写,应该抛出错误提醒用户 Mine.new.a # 应该抛出NoMethodError错误 一个需要留意的地方,缩写方法不能调用其他缩写: class Nine abbrev :hash abbrev :has end Nine.new.ha # => [:hash, :has] Nine.new.has # => 不能调用hash方法,应该抛出NoMethodError错误 class Nine def has; 42; end end Nine.new.has # => 这个时候应该返回42 针对这些特殊情况的测试,原文提供了一个完整的单元测试代码。 -----解答分割线----- 原题和一些解法在这里:http://rubyquiz.com/quiz110.html 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |



