【问题标题】:Re-open String class and add .upcase method in Ruby重新打开 String 类并在 Ruby 中添加 .upcase 方法
【发布时间】:2016-07-13 19:27:30
【问题描述】:

任务:在 Ruby 中,我必须重新打开 String 类并添加一个调用 upcase 方法的新功能 my_new_method。

"abc".my_new_method

返回

"ABC"

我已尝试使用此代码,但测试显示参数数量错误(0 代表 1)

# Re-open String class
class String
  # Add the my_new_method method.
  def my_new_method(value)
    value.upcase
  end
end

测试:

Test.expect "abc".my_new_method == "ABC"

我知道我不必输入参数(值)但我不知道如何取之前写的字符串。

请尝试帮助我。提前致谢!

【问题讨论】:

  • 哎呀!为什么急于选择答案?如果一些成员仍在寻找答案怎么办?如果一些成员因为绿党已经获得奖励而决定不发布答案怎么办?这里的许多人至少要等几个小时才能选择答案。关键是,不要着急。如果有时间,请阅读 SO faq

标签: ruby string class methods upcase


【解决方案1】:

只要小心,扩展核心类就可以了,尤其是在重写核心方法时。

请记住,每当您在实例方法中时,self 总是指代该实例:

def my_special_upcase
  self.upcase + '!'
end

所以self 指的是有问题的字符串。

【讨论】:

  • 我更喜欢upcase,而不是self.upcase。我知道有些像self. 是明确的,但如果这样写,应该提到self. 是不必要的。 ('!' 是干什么用的?)
  • ! 只是为了让它做一些 upcase 单独不会做的特别的事情。至于包括self,那是为了说明它是一个方法调用。有些人原则上避免这样做,但我不介意。 JavaScript 需要 this 所以这对我来说并不麻烦。
猜你喜欢
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 2011-10-01
  • 2012-07-27
  • 1970-01-01
  • 2011-05-26
  • 2010-09-10
相关资源
最近更新 更多