「Ruby」参考情報 第7回 Rubyの変数(ローカル変数、インスタンス変数、クラス変数、グローバル変数)として、「(1)ローカル変数」「(2)インスタンス変数」「(3)クラス変数」「(4)グローバル変数」について紹介。

「Ruby」参考情報 第7回 Rubyの変数(ローカル変数、インスタンス変数、クラス変数、グローバル変数)

「Ruby」参考情報 第7回 Rubyの変数(ローカル変数、インスタンス変数、クラス変数、グローバル変数)として、「(1)ローカル変数」「(2)インスタンス変数」「(3)クラス変数」「(4)グローバル変数」について紹介。

■関連する比較ページ

(1)ローカル変数

■命名規則

「英小文字」または「_」で始めます。

■スコープ

(宣言した位置から)その変数が宣言されたブロック、メソッド定義、クラス/モジュール定義の終わりまでとなります。

■サンプルコード

class Test
  #ローカル変数定義(1)
  my_hobby_1 = "ゲーム"
  #メソッド定義
  def out_my_hobby
    #my_hobby_1を出力
    #スコープ範囲外のローカル変数参照→エラーとなる
    puts my_hobby_1
    #ローカル変数定義(2)
    my_hobby_2 = "読書"
    #my_hobby_2を出力→出力される
    puts my_hobby_2
  end
end
#クラスインスタンス生成
test = Test.new
#out_my_hobbyメソッドを実行
test.out_my_hobby

(2)インスタンス変数

■命名規則

「@」で始めます。

■スコープ

インスタンス内の全メソッドで共通して使用できます。インスタンスごとに固有になります。

■サンプルコード

class Test
  #メソッド インスタンス変数に値をセット
  def set_my_hobby(name)
    #インスタンス変数定義
    @my_hobby = name
  end
  #メソッド インスタンス変数を出力
  def out_my_hobby
    puts @my_hobby
  end
end
#クラスインスタンス生成(1)
test_1 = Test.new
#(1)set_my_hobbyメソッドを実行
test_1.set_my_hobby("ゲーム")
#クラスインスタンス生成(2)
test_2 = Test.new
#(2)set_my_hobbyメソッドを実行
test_2.set_my_hobby("読書")
#(1)out_my_hobbyメソッドを実行→「ゲーム」
test_1.out_my_hobby
#(2)out_my_hobbyメソッドを実行→「読書」
test_2.out_my_hobby

(3)クラス変数

■命名規則

「@@」で始めます。

■スコープ

クラス、および、そのクラスから生成されるインスタンスで共有されます。

■サンプルコード

class Test
  #メソッド クラス変数に値をセット
  def set_my_hobby(name)
    #クラス変数定義
    @@my_hobby = name
  end
  #メソッド クラス変数を出力
    def out_my_hobby
    puts @@my_hobby
  end
end
#クラスインスタンス生成(1)
test_1 = Test.new
#(1)set_my_hobbyメソッドを実行
test_1.set_my_hobby("ゲーム")
#(1)out_my_hobbyメソッドを実行
#(1)"ゲーム"が出力される
test_1.out_my_hobby
#クラスインスタンス生成(2)
test_2 = Test.new
#(2)set_my_hobbyメソッドを実行 クラス変数が"ゲーム"から"読書"に書き換えられる
test_2.set_my_hobby("読書")
#(2)out_my_hobbyメソッドを実行
#(2)"読書"が出力される
test_2.out_my_hobby
#(1)test_1インスタンスでも"読書"が出力される
test_1.out_my_hobby

(4)グローバル変数

■命名規則

「$」で始めます。

■スコープ

グローバル変数は、その「グローバル」の名の通りに、オブジェクトの壁も乗り越えて、プログラムのどこからでも共有されます。

■サンプルコード

class Test
  #グローバル変数定義
  $my_hobby = "ゲーム"
  #メソッド グローバル変数を出力
  def out_my_hobby
    puts $my_hobby
  end
end
#クラスインスタンス生成
test = Test.new
#out_my_hobbyメソッドを実行
test.out_my_hobby

Ruby最新TOPICS

【講演資料を公開】3/22「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」(2018年04月27日 10:04)

2018年03月22日(木)17:00~18:30 AP品川 9階 にて「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」と題したセミナーを開催しました。 当日は、会場の様子をWebで中継し 遠隔地等ご来場出来ない方にもご参加頂きました。お陰様で、盛況のうちに終了することができました。ありがとうございました。 講...

イベント情報

  • Zabbixカンファレンス2019
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter