module Access
def last
self[-1]
end
def start_end
self[0] + last
end
end
module StringExt
refine String do
include Access
end
end
using StringExt
puts 'abcd'.last # => d
puts 'abcd'.start_end
当一个类被太多的连接方法细化时,我认为最好将它们提取到一个模块中。但是,在上面的示例中,当一个方法调用另一个方法时演示了一个问题(参见最后一条语句),它会产生以下错误。
在“start_end”中:“abcd”的未定义局部变量或方法“last”:String(NameError)
使用全局变量解决了类似的问题,这也适用于我的示例。但我正在寻找另一种更好的方法来组织被调用的方法,并避免全局性的事情。
如何建议更好的方法来组织这些方法?