4

我想在 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

我怎样才能做到这一点?

4

3 回答 3

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
于 2012-04-28T02:28:14.043 回答
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"
于 2012-04-28T02:45:19.267 回答
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
于 2012-04-28T02:30:33.437 回答