💪
Ruby for in~とeach~の違いってなに??を理解するまでをそのまままとめてみた🐔🧠
初めに
積み重ね勉強をする中で、ちょっとでも頭に浮かんだ疑問を調べてまとめておくことにしました。
とりあえずまとめる癖を付け続けよういうことで、もちろん今回の内容も、基礎の基礎だと思いますが、アウトプットのためにまとめていきたいと思います。
プログラミング初学者が書いています。間違いがあれば、ご指摘ください。🙇
for in do ~ end
for 変数 in オブジェクト do
繰り返しを行う処理
end
★forを使うとオブジェクトに対して繰り返し処理を行うことができる。
forで使える繰り返し処理
- 範囲オブジェクト 1..5など
- 配列 ["あいう","えお","かきく"]等
- ハッシュ {:satou => 1,:tanaka => 2,:yamada => 3}等
each
オブジェクト.each do |変数|
繰り返しを行う処理
end
★eachもオブジェクトに対して繰り返し処理を行うことができる。
★使える繰り返し処理も同様。
違い
処理の内容はfor分と同じ。
「ちがうのは変数のスコープ」
⇒for:変数が処理の外でも有効 each⇒:変数が処理の中のみ有効
変数のスコープってなに?
変数を参照したり変更できる範囲のこと。
範囲の外からはその変数を利用できない。
【Rubyの対象の変数】
- クラス変数
- インスタンス変数
- クラスインスタンス変数(=Classオブジェクトのインスタンス変数)
- ローカル変数
- グローバル変数
クラス変数とグローバル変数が使用頻度が低すぎる状態なので、使用方法等を調べます。
クラス変数
//定義の仕方
@@classname = xxxx
//クラス内定義・クラス内メソッド内・initializeメソッド内・インスタンスメソッド内でも定義できる
ここで調べた用語
- initializeメソッド
「コンストラクタのこと」
コンストラクタとは、オブジェクトを生成した際に1度だけ実行される機能を指す名称。
★どんな時に使うか
オブジェクトが生成された際にのみ実行されることから、そのオブジェクト内で共通に使えるインスタンス変数の初期化などに使われる。
Rubyではオブジェクトを生成するnewメソッドの引数を利用して、コンストラクタによる変数の初期化も可能。
class Car
def initialize()
@name = "未定義"
end
end
car = Car.new()
Car.newでインスタンスを生成した後で、メソッドを呼び出す記述をしなくても自動的にメソッドを呼び出すことができる。
グローバル変数
$variable_name = xxxx
プログラムのどこからでも参照できる。
参考にさせていただいた記事
Discussion