8

重複の可能性:
Ruby セッターに「self」が必要なのはなぜですか。クラス内の資格?

誰かが次の違いを説明できますか、そしてなぜそれが期待どおりではないのか:

# version #1
class User
  def initialize(name, age)
    @name = name
    @age = age
  end
end

#version #2
class User
  attr_accessor :name, :age
  def initialize(name, age)
    @name = name
    @age = age
  end
end

#version #3
class User
  attr_accessor :name, :age
  def initialize(name, age)
    self.name = name
    self.age = age
  end
end

私が理解したことから、メソッドでは、代入するときにselfキーワードを使用する必要があります。これをメソッドで使用できないのはなぜinitializeですか?それともできますか?私はそれを使用しようとしましたが、期待どおりに機能していないようでし.

誰かが私のためにこれを一度だけ片付けてくれることを本当に願っています:)

4

2 に答える 2

0

メソッドで self を使用する必要はありません。インスタンス変数の場合、バージョン 1 または 2 のように @ で直接割り当てる必要があります。self は Python とは異なります。たとえば、クラス メソッド (C++ の静的関数など) を宣言するために使用されます。

于 2012-09-02T23:39:02.100 に答える