top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_100

Ruby:◇変数と定数:基礎的な考え方は他の言語と同じ ・・・ 【Ruby:9.5歩目】

 2008-07-08
第9.5歩
 ◇定数:アルファベット大文字で始まる


 これはわかり易いですねぇ。VBやPHPでスクリプト書くときも
自主的に定数は 全部大文字とかしてましたが
(例)ROOT_DOMAIN = "****"
Ruby では 決まり なんですねぇ。

Sitename = "ネットショップ開設比較"
p Sitename "=> "ネットショップ開設比較"
> 確認した

定数は再代入ができない
 1度入れたら2度目以降 入れ直しできない

 ちなみにそれを行うと次の警告メッセージだが
 「****.rb:3: warning: already initialized constant Sitename」
 これは、実行時にはエラーとはならない
 だがもちろん こんな使い方はしないね。
 ・・・当たり前だよね。だったら変数使えばいい。

・定数はローカルメソッドよりも広いスコープで
 参照できる

 ん? ちょっと気になる。曖昧だなぁ。一応確実に抑えておこう

定数のスコープ
1:クラス/モジュールで定義された定数は、そのクラス/モジュールの中で参照可
2:クラス/モジュール定義がネストしている場合には、内側のクラス/モジュールから外側の定数を参照可
3:スーパークラス及びインクルードしたモジュールの定数を参照可
4:直接参照できない定数は、::演算子を使って、クラス/モジュール名を指定することにより参照

 
 [未定義の定数]
  未定義の定数は参照できない
  未定義の定数にアクセスすると
   NameError が発生する(ローカル変数と同じだ)
p Sitename # NameError が発生する
> 確認した
*****.rb:5: uninitialized constant Sitename2 (NameError)



第9.6歩
 ◇インスタンス変数:@で名前が始まる


 今回は概略。
 ひとつのオブジェクトに所属し
  スコープもそのオブジェクトに限られる

(使用例)
class Bar # クラス定義
def foo # インスタンスメソッド定義
@a = "Hello" # インスタンス変数
end
end
> 確認した

 [未定義のインスタンス変数]
  未定義のインスタンス変数は参照できない
  未定義のインスタンス変数にアクセスすると
   nil が返ってくる
p @a #=> nil
> 確認した



第9.7歩
 ◇クラス変数:@@で名前が始まる


 クラス変数のスコープは、クラス定義の中

(使用例)
class Bar # クラス定義
@@a = "Hello" # クラス変数
p @@a #=> "Hello"
end
> 確認した
・この例では、Barクラスの中でのみ使用可能

・あるクラスの中で定義されたクラス変数を
 他のクラス定義の中から参照することはできない

 [未定義のクラス変数]
  未定義のクラス変数は参照できない
  未定義のクラス変数にアクセスすると
   NameError が発生する(ローカル変数と同じだ)
p @@b # NameError が発生する
> 確認した
*****.rb:20: uninitialized class variable @@b in Object (NameError)



FC2ブログランキングにほんブログ村 IT技術ブログ Webサイト構築へブログ王ランキング人気ブログランキング人気ホームページランキングへ
commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/100-b38d1a83
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。