【发布时间】:2017-01-11 19:37:16
【问题描述】:
我有时会使用这种结构:
class Test
def today
date = Date.today
def date.is_friday?
strftime("%A") == "Friday"
end
date
end
end
效果很好……
t = Test.new
t.today # => <Date: 2016-09-03 ((2457635j,0s,0n),+0s,2299161j)>
t.today.is_friday? # => false
我一直认为这是一种嵌套方法。但其他人坚持认为 Ruby 没有嵌套方法。好吧,我不迷上这个名字。但你怎么称呼它?有没有更好的方法来实现相同的功能?
【问题讨论】:
-
为什么不直接使用Date#friday?:
t = Test.new.today; t.friday??为什么要在Test.new.today返回的每个Date实例上定义一个方法is_friday?? -
好主意,Cary...对于我展示的示例来说,这将是一个非常好的方法。我可能应该展示一个更接近我通常使用此构造的方式的示例。在 Rails 上下文中,我主要使用#to_s 或#to_json 扩展一些方法。所以可能没有现成的类(例如上面的 Date)来扩展我需要的功能。
-
我刚好看到你的评论是写给我的。要让我收到此类 cmets 的通知,您需要包含我的用户名或其中的一部分,例如 @cary。
标签: ruby