心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

パーフェクトRuby 2章Rubyの基礎 2-2 変数と定数

   


p47
2-2-1 ローカル変数
スコープは
・ブロック内
・メソッド定義内
・クラス・モジュール定義内
・トップレベル内
で納得。このうち、
メソッド定義内からトップレベルの変数は参照できないけど、
ブロック定義内からトップレベルの変数が参照できる例が紹介されている。

んじゃあ、メソッドの中にブロックからトップレベルの変数は参照できるんかい?
たぶんできない。メソッドに引数の形で渡してあげる必要があると思う。

できなかったよ。エラーとなる箇所は#でコメントアウトしたソースが以下。

top = "Im on Top level"
mountains = ["evelest", "fuji"]

def display
  puts top #メソッド内からトップレベル変数の参照<=できない
end

mountains.each do |yama| #yamaがブロック内変数
  puts top + " of #{yama}" #ブロック内からトップレベルの参照 <=できる
end

# puts yama #ブロック外からブロック内変数の参照 <=できない

jojos = ["Jonathan", "Joseph", "Jotaro", "Jorin"]

def hello(names)
  names.each do |name|
    puts "Hello, #{name}"
  end
end

hello(jojos)

def konichiwa(names)
  names.each do |name|
#    puts top + ", #{name}" #メソッド内のブロック内からトップレベルの参照 <=できない
    puts "Konichiwa, #{name}"
  end
end

konichiwa(jojos)

#=>
Im on Top level of evelest
Im on Top level of fuji
Hello, Jonathan
Hello, Joseph
Hello, Jotaro
Hello, Jorin
Konichiwa, Jonathan
Konichiwa, Joseph
Konichiwa, Jotaro
Konichiwa, Jorin

2-2-2 グローバル変数

グローバル変数のスコープは非常に広い

と、なんともアバウトな説明。何処で定義しても、何処からでも参照できる。必要なければ使うべきではないと。
グローバル変数は頭に$をつける。

2-2-3 定数
定数は大文字で書き始める。
ここで驚き、定数には再代入ができる。って全然定数じゃないやんか。

TEISU = "teisu dayo"
puts TEISU

TEISU = "kawattayo"
puts TEISU

#=>
teisu dayo
teisu.rb:4: warning: already initialized constant TEISU
teisu.rb:1: warning: previous definition of TEISU was here
kawattayo

wariningは出るものの実行できてしまう。ひどい。

メソッドの中で定数の定義はできない。そりゃそうだ。それは変数だ。なので大文字で始まる定数つか変数をメソッド内で定義すると文法エラーになる。

次は2-3 条件分岐と真偽値

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
RailsTutorial4.0を高速で復習する。5.6章。演習2問目。

5.6演習、2問目です。これをやったら、すっ飛ばしているリンク貼り作業をします。 …

no image
RailsTutorial4.0を高速で復習する。6.2.2章。

6.2.2プレゼンスを検証する、です。いよいよモデルにコードを書いていきます。 …

no image
Ruby 1.9系をインストールする

Rubyのバージョン管理ができるrbenvをインストールしたらいよいよRubyの …

no image
RailsのRoutingいろいろ

コントローラーがAbc アクションがactrionxだとして、 http://y …

GitにRailsプロジェクトをpushする

HomebrewerでGitをインストールし、Rails 3.2やRails4. …

no image
RailsTutorial4.0を高速で復習する。7.1.2章

7.1.2ユーザーリソース、です。 /user/newを/signupで表示させ …

Mac初期化。MavericksクリーンインストールUSB作る。

イラレやxcodeはMacBookAirに重すぎる、、そろそろ転売の時機なのかも …

no image
RailsTutorial4.0を高速で復習する。9.4.2章。

9.4.2 destroyアクション、です。 テストを書く FactoryGir …

パーフェクトRuby 2章Rubyの基礎 2-1 Hello,Ruby

12章から5章まではPart2 Ruby言語仕様 です。 2章 Rubyの基礎 …

no image
RailsTutorial4.0を高速で復習する。3.3.2章。

3.3.2タイトルのテストをパスさせる。です。 ひとまず、静的ページをhtmlの …