LoginSignup
0
0

More than 5 years have passed since last update.

Rubyの引数を、改めて考え直す。

Posted at

スコープが異なると、変数を利用できない

関数を定義しても、スコープが違う変数を利用することができない。

異なるスコープの変数を利用するためには、引数を使う必要がある。その仕組をまとめておこうと思う。

サンプルとして、「好きなラーメン屋を出力する」というプログラムを書く。

def favoriteLamenShop(name)
  puts "#{name}が大好き。"
end

favoriteLamenShop("二郎")

→出力は 「二郎が大好き。」となる。

プログラムの流れ

  1. 関数の宣言部分はまずスルーされるため、初めに読まれるのはfavoriteLamenShop("二郎")の部分。
  2. すると、"二郎"という引数が、宣言したfavoriteLamenShopの引数(name)で読み込まれる。
  3. 引数nameに入った「二郎」は、「puts "#{name}が大好き。"」のところで、nameに入れられる。
  4. 結果、「二郎が大好き」が出力される。

本引数と仮引数の名前は異なっても構わない。

関数を読み出す時の引数を本引数、関数を宣言するときの引数を仮引数と言う。
これらの名前が異なっても問題はない。

今度は、好きなラーメン屋をユーザーに入力してもらう、というプログラムを書いてみる。

def favoriteLamenShop(name)
  puts "#{name}が大好き"
end

input = gets.to_s
favoriteLamenShop(input)

本引数はname, 仮引数はinputとなっており、名称が異なる。
だが問題なくプログラムは、ユーザーが入力した値を関数の結果として返す。

例えば「天下一品」と入力すれば、「天下一品が大好き」と出される。

注意点としては、関数の宣言時に、関数内では引数の名前を同じにすることくらい。

以上。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0