Ruby每周一测 - 方法名缩写调用

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

你可能感兴趣的:(html,单元测试,活动,Ruby)