Ruby方法链接

时间:2012-04-28 02:18:54

标签: 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

我怎样才能做到这一点?

3 个答案:

答案 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