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

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

パーフェクトRuby 2章Rubyの基礎 2-6 モジュール

   


p57
2-6 モジュール
2-6-1モジュールの定義式
モジュールはインスタンス化できないクラスのようなもの、とのこと。テンプレとか定数定義のかたまりのようなイメージを持っています。

名前空間として利用する例が紹介してある。
モジュールについては4-2でやる。

2-7 組み込みクラス
組み込みライブラリのことですね。組み込みライブラリはRubyにデフォで組み込まれているのでrequire を書かなくても使うことができる。

2-7-1 数値
整数型はFixnum公式リファレンスマニュアルでは ”演算の結果が Fixnum の範囲を越えた時には 自動的に Bignum に拡張されます” 
逆にBignumは ”多倍長整数のクラスです。 演算の結果が Fixnum の範囲内の時には 自動的に Fixnum に変換されます”
と、vis-a-vieな関係。Fixnumの範囲とは、”マシンのポインタのサイズに収まる長さの固定長整数で、 ほとんどのマシンでは 31 ビット幅です”

浮動小数点型はFloat “Float の実装は C 言語の double で、その精度は環 境に依存します。一般にはせいぜい15桁です。”

Rubyなので Fixnum 1000 みたいな型宣言は不要で、いきなり数字かいたら自動的にFixnum型になっている。

p 100.class #=> 100のクラスはFixnum
p 10.1.class #=> 10.1のクラスはFloat

p59
2-7-2 文字列
文字列は””(ダブルクォート)または”(シングルクォート)囲みで記述。””の中では式展開#{}が使える。
“”で書くべきか”で書くべきか、phpの時も迷った。
“”ではバックスラッシュ記法が適用された結果を表示。”はバックスラッシュ記法をそのまま表示。なので基本””が良さそう。でも、””で書いて式展開やバックスラッシュ記法を有効にすべきかいちいちコンピュータに判定させるのはムダという考え方もある。英語圏の人は”を使うことが多いように見えるのはなぜだろう。キーボードで”はうちづらいので、やっぱ基本””がいいな。

バックスラッシュ記法は公式のリテラルにある。ついでに式展開もある。

\t タブ(0x09)
\v 垂直タブ(0x0b)
\n 改行(0x0a)
\r キャリッジリターン(0x0d)
\f 改ページ(0x0c)
\b バックスペース (0x08)
\a ベル (0x07)
\e エスケープ (0x1b) #”中の’エスケープは\’、\のエスケープは\\
\s 空白 (0x20)
\nnn 8 進数表記 (n は 0-7)
\xnn 16 進数表記 (n は 0-9,a-f)
\cx
\C-x コントロール文字 (x は ASCII 文字)
\M-x メタ x (c | 0x80)
\M-\C-x メタ コントロール x
\x 文字 x そのもの
\unnnn Unicode 文字(n は 0-9,a-f,A-F、16進数4桁で指定)。
\u{nnnn} Unicode 文字列(n は 0-9,a-f,A-F)。nnnnは16進数で1桁から6桁までで指定可能。 スペースかタブ区切りで複数の Unicode 文字を指定できる。 例: “\u{30eb 30d3 30fc a}” # => “ルビー\n”
\改行 文字列中に改行を含めずに改行 # 改行の手前に\をつけると改行ざれなくなる。つまり複数行を一行にまとめることができる。

ちなみに、MacBookAirのキーボードに”\(バックスラッシュ)”がない!”¥(円マーク)”と”/(スラッシュ)”ならある。Macで”\”を出すには、
“alt(option)キー”+”¥(円マーク)”です!

puts '今日は\t#{2+3}日です。\n子供の日です。\
It\'s\swonderful!'
#=>今日は\t#{2+3}日です。\n子供の日です。\
It's\swonderful!

puts "今日は\t#{2+3}日です。\n子供の日です。\
It's\swonderful!" 
#=>今日は	5日です。
子供の日です。It's wonderful!

複数行にわたるときはヒアドキュメントを使うこと。ヒアドキュメント内では式展開やバックスラッシュ記法が使えるとのこと。。

str = <<EOS
今日は#{2+3}日、こどもの日です。
いい天気です。It\'s\swonderful!\\柏餅食べたい!
EOS

puts str
#=>
今日は5日、こどもの日です。
いい天気です。It's wonderful!\柏餅食べたい!

ヒアドキュメント開始の識別子を”で囲むと式展開やバックスラッシュ記法が無効。いつ使うんや。。

str = <<'EOS'
今日は#{2+3}日、こどもの日です。
いい天気です。It\'s\swonderful!\\柏餅食べたい!
EOS

puts str
#=>
今日は#{2+3}日、こどもの日です。
いい天気です。It\'s\swonderful!\\柏餅食べたい!

文字列の中でクォートを多様する場合は%記法を用いること。その%記法いろいろある一覧は公式のリテラルにありました。以下コピペ。

文字列リテラル、コマンド出力、正規表現リテラル、配列式、シンボルでは、 %で始まる形式の記法を用いることができます。 文字列や正規表現では、`”‘, `/’ など(通常のリテラルの区切り文字)を要素 に含めたい場合にバックスラッシュの数をコードから減らす効果があります。 また配列式では文字列の配列を簡単に表現できます。それぞれ以下のように対 応します。

%!STRING! : ダブルクォート文字列
%Q!STRING! : 同上
%q!STRING! : シングルクォート文字列
%x!STRING! : コマンド出力
%r!STRING! : 正規表現
%w!STRING! : 要素が文字列の配列(空白区切り)
%W!STRING! : 要素が文字列の配列(空白区切り)。式展開、バックスラッシュ記法が有効
%s!STRING! : シンボル。式展開、バックスラッシュ記法は無効
%i!STRING! : 要素がシンボルの配列(空白区切り)
%I!STRING! : 要素がシンボルの配列(空白区切り)。式展開、バックスラッシュ記法が有効

!の部分には改行を含めた任意の非英数字を使うことができます (%w、%W、%i、%I は区切りに空白、改行を用いるため、!の部分には使うことができません)。 始まりの区切り文字が括弧(`(‘,`[‘,`{‘,`<')である時には、終りの区切り文字は 対応する括弧になります。括弧を区切り文字にした場合、対応が取れていれば 区切り文字と同じ括弧を要素に含めることができます。

式展開と%記法の組み合わせで有効無効がp61で紹介されている。
都度必要に応じてみ直すことにする。

次は2-7-3 シンボルから。

 - テクニカル ,

Message

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

  関連記事

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

4.6演習、です。4章がRubyの説明章だったので演習はRuby問題になっていま …

no image
Homebrewをインストールする。

MacOS 10.8.5(Mountain Lion)にRuby&Ru …

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

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

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

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

no image
Everyday Rails頑張る。3章モデルスペック

テスト書いてからコードの決意。 今のような環境がない時代のプログラマでしたが、自 …

no image
iPhone充電3回分?大容量バッテリーで残念がなくなりました

iPhoneは便利なので、一日中使いっ放しの日がよくあります。iPhoneがあれ …

Ruby1.9+Rails3.2に加えて、Ruby2.0+Rails4.0のプロジェクトを作る。

Ruby1.9+Rails3.2のプロジェクトは作りましたが、その後、Ruby2 …

no image
いまだにユビキタスなSONYとクラウドに向かうApple

PS3のトルネが良さそう@ヤマダ電機。PS3本体とチューナーの2台になってスッキ …

詳解 Objective-C 2.0 第3版 CHAPTER2 Objective-Cのプログラム

Objective-Cの解説はメッセージから始まる。このメッセージという概念、も …

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

3.6高度なセットアップ、です。 この節を飛ばしても次の章以降には何の影響もあり …