[解決済み] Rubyのattr_accessorとは何ですか?
2022-03-17 17:30:45
質問
理解するのに苦労しています
attr_accessor
で
ルビー
.
どなたか説明してください。
どのように解決するのですか?
例えば、あるクラス
Person
.
class Person
end
person = Person.new
person.name # => no method error
明らかに、我々はメソッドを定義していない
name
. そうしましょう。
class Person
def name
@name # simply returning an instance variable @name
end
end
person = Person.new
person.name # => nil
person.name = "Dennis" # => no method error
嗚呼、名前を読むことはできても、名前を割り当てることができるわけではないのですね。これは2つの異なる方法です。前者は リーダー と呼ばれ、後者は ライター . まだライターを作成していなかったので、作成しましょう。
class Person
def name
@name
end
def name=(str)
@name = str
end
end
person = Person.new
person.name = 'Dennis'
person.name # => "Dennis"
すごいな。これでインスタンス変数の書き込みと読み出しができるようになりました
@name
リーダーメソッドとライターメソッドを使用しています。ただし、これは頻繁に行われることなので、毎回このようなメソッドを書くのは時間の無駄ではないでしょうか?もっと簡単にできるはずです。
class Person
attr_reader :name
attr_writer :name
end
これでも繰り返しになることがあります。リーダとライタの両方が必要な場合は、アクセッサを使えばいいのです。
class Person
attr_accessor :name
end
person = Person.new
person.name = "Dennis"
person.name # => "Dennis"
同じように動作します! そしてなんと、インスタンス変数
@name
は手動で行ったときと同じように設定されるので、他のメソッドで使用することができます。
class Person
attr_accessor :name
def greeting
"Hello #{@name}"
end
end
person = Person.new
person.name = "Dennis"
person.greeting # => "Hello Dennis"
以上です。を理解するために
attr_reader
,
attr_writer
および
attr_accessor
メソッドを実際に生成してくれるのは、他の回答や本、rubyのドキュメントを読んでください。
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on RailsでJSON出力を "きれい "にフォーマットする方法
-
[解決済み] Mac OSX YosemiteでRuby Version 2.0.0を最新版にアップデートする方法は?
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】attr_accessorとattr_accessibleの違いについて
-
[解決済み】Rubyのブロックとイールド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rubyで数値の配列の合計を出すには?
-
[解決済み】Ruby:kind_of? vs. instance_of? vs. is_a?
-
[解決済み] Gemfile が見つかりません。
-
[解決済み] あなたが提供した認証メカニズムはサポートされていません。AWS4-HMAC-SHA256を使用してください。
-
[解決済み] Rubyでリモートホストの到達可能性をpingで確認する方法
-
[解決済み] ルビー、すべての単語の最初の文字を大文字にする
-
[解決済み] Rubyで2次元配列の作成と反復処理
-
[解決済み] ルビー.天井と.床
-
[解決済み] プロキシ(ISA-NTLM)の後ろからRuby Gemsをアップデートする方法
-
[解決済み] Rubyのattr_accessor, attr_reader, attr_writerを使う理由は?