0

私はrubyが静的関数が同じクラス内でお互いを呼び出すことを可能にする2つの方法を知っています...

class MyClass

  def self.foo
    self.say "self"
  end

  def self.bar
    MyClass.say "class name"
  end

  def self.say(text)
    puts "Using #{text}"
  end

end

2つの構文の間に微妙な違いはありますか?多分パフォーマンス?

4

2 に答える 2

4

いいえ、まったく同じです。パフォーマンス面でも。唯一の違いは、コードの保守性です。明示的なクラス参照を持つメソッドを別のクラスに移動することにした場合は、より多くの作業が必要になります(状況によってはより少なくなります)。

def self.bar
  MyClass.say "class name"
end

ああ、そしてルビーには静的メソッドはありません。

selfまた、そこでメソッドを呼び出すために明示的に使用する必要はありません。self暗黙的にすることができます。

class MyClass

  def self.foo
    say "self"
  end

  def self.say(text)
    puts "Using #{text}"
  end

end

MyClass.foo
# >> Using self
于 2013-02-01T18:58:43.140 に答える
1

いいえ、違いはありません。Rubyは、同じことを行うための複数の方法を提供することに寛大です。

于 2013-02-01T19:00:01.990 に答える