Ruby方法链接
我想用Ruby链接我自己的方法。而不是像这样编写ruby方法并使用它们:Ruby方法链接,ruby,chaining,method-chaining,Ruby,Chaining,Method Chaining,我想用Ruby链接我自己的方法。而不是像这样编写ruby方法并使用它们: def percentage_to_i(percentage) percentage.chomp('%') percentage.to_i end percentage = "75%" percentage_to_i(percentage) => 75 percentage = "75%" percentage.percentage_to_i => 75 我想这样使用它: def percenta
def percentage_to_i(percentage)
percentage.chomp('%')
percentage.to_i
end
percentage = "75%"
percentage_to_i(percentage)
=> 75
percentage = "75%"
percentage.percentage_to_i
=> 75
我想这样使用它:
def percentage_to_i(percentage)
percentage.chomp('%')
percentage.to_i
end
percentage = "75%"
percentage_to_i(percentage)
=> 75
percentage = "75%"
percentage.percentage_to_i
=> 75
我怎样才能做到这一点 您必须将该方法添加到String类中:
class String
def percentage_to_i
self.chomp('%')
self.to_i
end
end
class String
def percentage_to_i
self.to_i # or whatever you want
end
end
通过此操作,您可以获得所需的输出:
percentage = "75%"
percentage.percentage_to_i # => 75
这有点没用,因为to_i
已经为你做了:
percentage = "75%"
percentage.to_i # => 75
单例方法
def percentage.percentage_to_i
self.chomp('%')
self.to_i
end
创建自己的类
class Percent
def initialize(value)
@value = value
end
def to_i
@value.chomp('%')
@value.to_i
end
def to_s
"#{@value}%"
end
end
你想要什么还不完全清楚 如果希望能够将字符串实例转换为_i,则只需调用_i:
"75%".to_i => 75
如果您希望它有一些特殊的行为,那么monkey修补String类:
class String
def percentage_to_i
self.chomp('%')
self.to_i
end
end
class String
def percentage_to_i
self.to_i # or whatever you want
end
end
如果您真的想链接方法,那么您通常希望返回同一类的修改实例
class String
def half
(self.to_f / 2).to_s
end
end
s = "100"
s.half.half => "25"
为什么不做一个
Percent
类呢?哈哈,我最终做了这个,然后回来写我自己的答案。等着接受你的。谢谢。谢谢,问题更多的是关于链接,但我不知道我可以单独使用to_I
做同样的事情。我将该方法添加到字符串
类中(如您的回答中所示),但是在该模型的类定义的结束
语句之后的模型文件中(app/models/content.rb
)。我认为这样做被称为“mixin”。有趣的是,什么时候这比扩展类更有利?我正试图为单例方法所涉及的额外工作找出一个用例?实例上的@Dru单例方法在它们是一次性的东西时非常有用。当我需要将对象变形为API以便在库函数中使用时,我使用过它们,但它们并不经常被使用。当实际上只有一个实例需要一个未在类中定义的不同行为时。它的好处是,您不必更改或扩展类。