プログラミング言語Ruby 2章 Rubyプログラムの構造と実行
コメント
#文字からその行の終わりまでコメント。 # この行はすべてコメント x = "#これは文字列" # この部分はコメント y = /#これは正規表現/ # この部分もコメント
埋め込みドキュメント
行頭が=beginになっている行から始まり、行頭が=endになっている行まで。
=begin 以下のコードは問題あり。要フィックス! この部分のコードはコメントアウトされる =end
ドキュメント用コメント
特別な形式でコメントを書くことでAPIドキュメントを組み込むことができる。
通常各行の先頭が#になっている複数行コメントの形式で書かれるが、=begin rdoc を先頭とする埋め込みドキュメントとして書くこともできる。
- rdoc
- rdocツールの詳細については lib/rdoc/README
リテラル
Rubyソースコードに直接現れる値(数値、文字列、正規表現)。
1 # 整数リテラル 1.0 # 浮動小数点数リテラル 'one' # 文字列リテラル "two" # 別の種類の文字列リテラル /three/ # 正規表現リテラル
識別子
変数、メソッド、クラスなどの名前のこと。
複数の語からなる識別子で定数でないものには、アンダースコアを使ったlike_thisのような名前をつける習慣になっている。
複数の語からなる定数の識別子は、LIKE_THIS(とかLikeThis)とする。
識別子の中の記号類
$files # グローバル変数 @data # インスタンス変数 @@counter # クラス変数 empty? # 論理値を返すメソッド(述語メソッド) sort! # その場で書き換えるバージョンのsort timeout= # 代入演算子によって起動されるメソッド x.timeout = y 的な
キーワード
__LINE__ case ensure not then __ENCODING__ class false or true __FILE__ def for redo undef BEGIN defined? if rescue unless END do in retry until alias else module return when and elsif next self while begin end nil super yield break
行頭に含まれている場合に限り特別なキーワード
=begin =end __END___
これらのキーワードは予約語として扱ったほうが無難。
Rubyの重要な機能は、Kernel、Module、Class、Objectクラスのメソッドとして実装されているので、次の識別子も予約語として扱ったほうがよい。
# 文やキーワードのように見えるメソッド at_exit catch private require attr include proc throw attr_accessor lambda protected attr_reader load public attr_writer loop raise
# よく使われるグローバル関数 Array chomp! gsub! select Float chop iterator? sleep Integer chop! load split String eval open sprintf URI exec p srand abort exit print sub autoload exit! printf sub! autoload? fail putc syscall binding fork puts system block_given? format rand test callcc getc readline trap caller gets readlines warn chomp gsub scan
# よく使われるオブジェクトメソッド allocate freeze kind_off? superclass clone frozen? method taint display hash methods tainted? dup id new to_a enum_for inherited nil? to_enum eql? inspect object_id to_s equal? instance_of? respond_to? untaint extend is_a? send
空白
トークンを区切るために使われる。スペース、タブ、改行。
通常、文末は改行によって表され、「;」は省略するのが習慣。
スペースとメソッド呼び出し
f(3+2)+1 # メソッドfに引数5を渡してから結果に1を加える f (3+2)+1 # メソッド名の後ろにスペースが入っているのでRubyはメソッド呼び出しのまわりのかっこが省略されていると判断。f(6) といっしょ。か?
空白によってコードの意味がはっきりしなくなるのを防ぐ方法
- メソッド名と開きかっこの間にスペースを入れない
- メソッドの第1引数が開きかっこで始まる場合は、必ずメソッド呼び出しのかっこを使うようにする
- 例えば、f((3+2)+1)と書く
- Rubyインタープリタを起動するときに必ず-wオプションを指定して、上のルールのどちらかを忘れたときに警告が表示されるようにする
構文構造
式
1 # 値が直接表現された式 x # これも式 x = 1 # 代入式 x = x + 1 # 2つの演算を含む式
文
式をRubyのキーワードで結合すると、条件分岐のif文やコードの反復実行のwhile文などの文が作られる。
while x < 10 do # この式がtrueである間は、 print x # この式を実行せよ x = x + 1 # そして、この文を実行せよ end # 繰り返しの末尾
- クラス
- 相互作用するように設計されたメソッドのグループをまとめる
- モジュール
- 関連するクラスとクラスを持たないメソッドをまとめる