心はいつも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章。演習3問目。

5章最後の演習、3問目です。 リスト5.38に示すように、元のヘルパーメソッドに …

Provisioning fileが作成できない!

iPhoneアプリを公開するために、itunes connectでProvisi …

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

10.3マイクロポストを操作する、です。 仕様の理解 ポストはユーザーだけが投稿 …

画面キャプチャ系extension

現在メインブラウザはchromeを利用しています。画面キャプチャextensio …

no image
MacBookAirで真央ちゃんのテレビ放映を見ました

テレビ持っていないを公言しています。 15年以上使っていたナショナル6型ブラウン …

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

3.3.4レイアウトを使って重複を解消する、です。 ここでapplication …

no image
電子雑誌を買いました

GWの計画を立てているとき、行きたい場所を検索をすると、HANAKO WESTの …

no image
プログラミングから離れた理由を思い出した

私は転職が多く5社で正社員で経験しています。全部IT系なのだけど全部職種が違いま …

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

9.2認可、です。 自分以外の人が自分のProfileを変更できないようにします …

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

5.2SassとAsset Pipeline、です。 ここは読み物系です。読んで …