心はいつも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

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

  関連記事

RailsTutorial4.0を高速で復習する。9章。

8章で随分おなかいっぱいになりました。 第9章 ユーザーの更新・表示・削除、です …

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

9.2.2正しいユーザーを要求する、です。 テストを書く 自分以外の人がプロフィ …

no image
IBActionのIBって?

railsもやってますが、xcodeも再開しています。 ところで、 IBActi …

RailsTutorial4.0を高速で復習する。8章。

仕様の探求 userモデルには、登録と認証、承認に必要なモデルは既に作ってありま …

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

8.2.5ユーザー登録と同時にサインインする、です。 ユーザーが登録を行った後、 …

iPhoneでのToDo&スケジュール管理アプリ決定しました

苦手なタスク管理のために読んだ2冊というエントリーが割と人気なのですが、いまだに …

ラクダと蛇(キャメルとスネーク、Camel&Snake)

蛇。 いきなりラクダと蛇ってなんぞやー!と思う人と、あ、それかと思う人。後者はプ …

MicrosoftのFutureVision 2019 vs 2011 vs 2010

Wiredで取り上げられたので、今日はMSのFutureVisionが話題でした …

WindowsキーボードをMacで使う

キーボード難民です。Mac miniでApple純正のキーボードを使っていました …

RailsTutorial4.0を高速で復習する。7章

第7章ユーザー登録、です。 6章でuserモデルを作ったので、7章はwebでの登 …