attr_accessor、attr_writer、attr_readerの使用方法
この記事は、属性アクセサー(attr_accessor
)に関するものです。 )Rubyで。
お急ぎの場合は、下にスクロールしてください。
説明から始めたいので:
属性アクセサーを使用する理由 !
インスタンス変数を持つクラスがあり、それらを外部に公開したいとします。
どうやって?
メソッドを定義する必要があります。
インスタンス変数にアクセスできるのはメソッドのみです。
なぜですか?
これを行わないとエラーが発生するためです。
ここに例があります :
class Food def initialize(protein) @protein = protein end end bacon = Food.new(21) bacon.protein # NoMethodError: undefined method `protein'
NoMethodError
protein
の値を尋ねたときに発生するエラーです 適切な設定なし。
解決策は何ですか?
このように独自のメソッドを定義できます :
class Food def protein @protein end end bacon.protein # 21
他のOOP言語では、これは「ゲッター」メソッドとして知られています。インスタンス変数の値を取得するメソッドを定義します。
値を変更することもできます。
そのためには、別の方法が必要です 、このように:
class Food def protein=(value) @protein = value end end bacon.protein = 25
値を変更できるように、オブジェクトへのポータルを開いていると想像してください。
それがこれが行っていることです。
今 :
この種のメソッドを定義するためのより良い方法はありますか?
ある種のショートカットが好きですか?
はい!
🙂
があります
ここでattr_accessor
入ってくる。
Rubyattr_accessorの例
attr_accessor
を使用して、これらのメソッドを作成するようにRubyに指示できます。 。
方法は次のとおりです :
class Food attr_accessor :protein def initialize(protein) @protein = protein end end
この行を見てください :
attr_accessor :protein
これは、他のメソッドを作成するRubyメソッドです。
どのような方法ですか?
この例では、以下を作成します:
protein
-
protein=
これらは以前に作成したものと同じメソッドです…
しかし、今ではそれらを入力する必要はありません。
近道です!
attr_accessor vs attr_reader
attr_accessor
の他に 、他の種類のアクセサーもあります。
正確には3つ :
-
attr_accessor
-
attr_reader
-
attr_writer
それらの違いは何ですか?
そうですね、attr_accessorはREADERメソッドとWRITERメソッドの両方を作成します。
-
attr_reader
リーダーのみを作成します。 -
attr_writer
ライターのみを作成します。
言い換えれば :
attr_reader
を使用 値を読み取ることはできますが、変更することはできません。 attr_writer
を使用 値を変更することはできますが、読み取ることはできません。
複数のインスタンス変数
複数の属性メソッドを定義したいですか?
あなたはそれを行うことができます。
ただし、正しい構文を使用する必要があります。
このように :
attr_reader :name, :value, :ready?
いくつでも作成できます。
ビデオチュートリアルを見る
概要
Rubyの属性アクセサーについて学習しました。 3つのメソッドのセット(attr_accessor
、attr_writer
&attr_reader
)クラスの外部からインスタンス変数にアクセスして設定します。
さあ、練習しましょう。
-
RubyでStructとOpenStructを使用する方法
Rubyの構造体とは何ですか? 構造体は組み込みのRubyクラスであり、値オブジェクトを生成する新しいクラスを作成するために使用されます。値オブジェクトは、関連する属性を一緒に格納するために使用されます。 ここに例があります : Point 2つの座標(x &y 。 このデータはさまざまな方法で表すことができます。 いいね : 配列[10, 20] ハッシュ{ x: 10, y: 10 } オブジェクトPoint.new(10, 20) 複数のPointを使用する場合 、オブジェクトアプローチを使用することをお勧めします。 しかし… これら2つの値を一緒に格納するた
-
RailsアプリケーションでOmniAuth-Twitterを使用する方法
このチュートリアルでは、アプリケーションのユーザーがTwitterアカウントを使用してログインできるようにする方法を学習します。これを行うには、OAuthなどのツールを使用すると簡単になります。 OmniAuthのTwitter戦略を含むOmniAuth-Twitterを利用します。 飛び込みましょう! はじめに Railsアプリケーションを生成することから始めます。ターミナルから、コマンドを実行して実行します。 rails new Tuts-Social -T Gemfileを開き、ブートストラップgemを追加します。 #Gemfile...gem bootstra