Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyのインスタンス変数を理解したい場合はこちらをお読みください

Rubyインスタンス変数、それらがどのように機能し、なぜそれらが役立つのかについて知りたい場合。

あなたは正しい場所にいます!

最初の質問…

インスタンス変数とは何ですか?

Rubyプログラミング言語では、インスタンス変数は@で始まる変数の一種です。 シンボル。

 @fruit 

インスタンス変数は、オブジェクト指向プログラミング(OOP)の一部として使用され、データを格納するための独自のプライベートスペースをオブジェクトに提供します。

オブジェクトはできると言います

  1. 何かをする
  2. 知っている

メソッドは物事を実現し、物事を実行します。

インスタンス変数はデータを格納し、それらは物事を知っています。

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インスタンス変数について学びました! @で始まる一種の変数 シンボルとそれは、クラス内でデータを保存する場所を提供するために使用されます。

今すぐ練習することを忘れないでください。コード例を試して、独自のコード例を考えてください。

読んでくれてありがとう。


  1. それでも Internet Explorer の方が好きなら、これは必読です!

    Internet Explorer は、1995 年から最近 Windows 10 がリリースされるまで、Windows の一部でした。IE 11 は、Internet Explorer の最後のバージョンでした。私たちの多くは、ユーザー フレンドリーなインターフェイスを理由に、今でも Internet Explorer を好んで使用しています。 最近、IE の実行速度が遅くなったり、応答しなくなったりすることがありますか?心配しないで!ここでは、IE 11 が遅くて動きが鈍い場合に役立つヒントをいくつか紹介します。 Internet Explorer 11 のパフォーマンスを向上させるための

  2. ソーシャル ネットワーキングは好きですか?

    最近、技術的な更新が頻繁に行われています。すべてのテクノロジーは、より大きくより優れたものに引き継がれることが期待されています。 常に更新が必要な最も多作なプラットフォームの 1 つは、ソーシャル ネットワーキング サイトです。彼らは、以前よりも優れたエクスペリエンスをユーザーに提供するために一生懸命働いています。いくつかのものを追加したり、手放したりします。あなたのお気に入りのネットワーキング サイトのいくつかが思いついた最新の興味深いものをいくつか見てみましょう。 1. Twitter はその卵の顔に別れを告げます! マイクロ ブログ サイトの Twitter は、顔を見せたくない人のため