我想链的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
我怎样才能做到这一点?
你的方法添加到String类:
class String
def percentage_to_i
self.chomp('%')
self.to_i
end
end
有了这个,你可以得到你想要的输出:
percentage = "75%"
percentage.percentage_to_i # => 75
这是一种无用的,因为to_i
会为你已经:
percentage = "75%"
percentage.to_i # => 75
这不是完全清楚你想要什么。
如果您希望能够将字符串转换to_i的实例,那么只需要调用to_i:
"75%".to_i => 75
如果你想让它有一些特殊的行为,那么猴子修补String类:
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"
辛格尔顿方法
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