Rubyのインスタンス変数を理解したい場合はこちらをお読みください
Rubyインスタンス変数、それらがどのように機能し、なぜそれらが役立つのかについて知りたい場合。
あなたは正しい場所にいます!
最初の質問…
インスタンス変数とは何ですか?
Rubyプログラミング言語では、インスタンス変数は@
で始まる変数の一種です。 シンボル。
例 :
@fruit
インスタンス変数は、オブジェクト指向プログラミング(OOP)の一部として使用され、データを格納するための独自のプライベートスペースをオブジェクトに提供します。
オブジェクトはできると言います :
- 何かをする
- 知っている
メソッドは物事を実現し、物事を実行します。
インスタンス変数はデータを格納し、それらは物事を知っています。
例 :
Fruit
をお持ちの場合 クラスでは、果物の種類、色、重さなどを知りたい場合があります。
これらの属性はすべてインスタンス変数になります。
@color
のように 、@type
、@weight
。
次へ :
コード例を見てみましょう。
Rubyインスタンス変数を定義および使用する方法
クラス内でインスタンス変数を定義します。
例 :
CoffeeMachine
があるとしましょう クラス。
コーヒーメーカーには水が必要なので、利用できる水量を知りたい場合があります。
これを行うことができます :
class CoffeeMachine def initialize @water =100 endend
この@water
インスタンス変数です。
100
を割り当てます @water
へ 初期値として。
今 :
make_coffee
がある場合 方法では、タンクに残っている水の量を減らすことができます。
class CoffeeMachine def initialize @water =100 end def make_coffee @water-=10 endend
すべてのCoffeeMachine
作成したオブジェクト(new
を使用) )@water
には独自のプライベート値があります 。
意味がわかりますよね?
実際のコーヒーメーカーが10台ある場合、それぞれに独自の水位が設定されるためです。
そのため、インスタンス変数を使用しています!
インスタンス変数にアクセスする方法
インスタンス変数は、現在の値を読み取ることができなければあまり役に立ちません。
@
を使用してインスタンス変数の値を読み取ることができます 構文。
このように :
class CoffeeMachine def initialize @water =50 end def print_water_level puts "Water Level:#{@ water}" endendmachine =CoffeeMachine.newmachine.print_water_level#Water Level:50
print_water_level
メソッドは@water
を使用します その値を出力します。
属性アクセサーの使用
外部からインスタンス変数にアクセスできないことに気付くかもしれません クラス。
これは仕様によるものです!
これを「カプセル化」と呼びます。オブジェクトのデータは、他のRubyオブジェクトと同様に、外部から保護されています。
これが私の意味です :
machine =CoffeeMachine.newmachine.water#NoMethodError:#machine。@water#の未定義のメソッド `water' 場合によっては、これを許可することもできます。
オブジェクトのデータにウィンドウを開いて、外部から利用できるようにすることができます。
そのための1つの方法 :
class CoffeeMachine def initialize @water =100 end def water @water endendmachine =CoffeeMachine.newmachine.water#100ここでは特別なことは何もありません。
アクセスできる場所の内部から値を返します 。
もう1つのオプションは、属性リーダーを使用することです。
例 :
class CoffeeMachine attr_reader:water def initialize @water =100 endendmachine =CoffeeMachine.newmachine.water#100以前と同じです。
唯一の違いは、Rubyがあなたのために大変な作業を行い、その
water
を作成することです。 メソッド。知っておくべきこと
トラブルに巻き込まれないように、インスタンス変数について覚えておくべきことがいくつかあります。
メモを取る :
- 未定義のインスタンス変数は常に
nil
を返します- インスタンス変数は、
initialize
で作成する必要はありません。 方法ですが、それが初期値を与える方法ですinstance_variable_get
など、インスタンス変数にアクセスするための高度な方法があります 、ただし、これらは避ける必要がありますところで、インスタンス変数のリストを取得できます。
このように :
machine.instance_variables#[:@water]あなたはそれが役に立つと思うかもしれません🙂
もう1つ :
Railsでは、インスタンス変数(
@books
など) )、コントローラーとビューの間でデータを共有するために使用されます。ただし、自分のクラスでは通常どおりに使用できます。
概要
Rubyインスタンス変数について学びました!
@
で始まる一種の変数 シンボルとそれは、クラス内でデータを保存する場所を提供するために使用されます。今すぐ練習することを忘れないでください。コード例を試して、独自のコード例を考えてください。
読んでくれてありがとう。
-
それでも Internet Explorer の方が好きなら、これは必読です!
Internet Explorer は、1995 年から最近 Windows 10 がリリースされるまで、Windows の一部でした。IE 11 は、Internet Explorer の最後のバージョンでした。私たちの多くは、ユーザー フレンドリーなインターフェイスを理由に、今でも Internet Explorer を好んで使用しています。 最近、IE の実行速度が遅くなったり、応答しなくなったりすることがありますか?心配しないで!ここでは、IE 11 が遅くて動きが鈍い場合に役立つヒントをいくつか紹介します。 Internet Explorer 11 のパフォーマンスを向上させるための
-
ソーシャル ネットワーキングは好きですか?
最近、技術的な更新が頻繁に行われています。すべてのテクノロジーは、より大きくより優れたものに引き継がれることが期待されています。 常に更新が必要な最も多作なプラットフォームの 1 つは、ソーシャル ネットワーキング サイトです。彼らは、以前よりも優れたエクスペリエンスをユーザーに提供するために一生懸命働いています。いくつかのものを追加したり、手放したりします。あなたのお気に入りのネットワーキング サイトのいくつかが思いついた最新の興味深いものをいくつか見てみましょう。 1. Twitter はその卵の顔に別れを告げます! マイクロ ブログ サイトの Twitter は、顔を見せたくない人のため