我想在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
我怎样才能做到这一点?
答案 0 :(得分:7)
您必须将方法添加到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
答案 1 :(得分:1)
目前还不完全清楚你想要什么。
如果你想能够转换String 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"
答案 2 :(得分:0)
单身方法
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