Ruby体験記11 〜特殊変数、Array#each、String#each_char、条件式2、ライブラリの作成

どうも。三十路です。

本日も2巻。

Ruby 2 さまざまなデータとアルゴリズム (CD-ROM付) (プログラミング学習シリーズ)

Ruby 2 さまざまなデータとアルゴリズム (CD-ROM付) (プログラミング学習シリーズ)

特殊変数

Rubyでは共通で利用するオブジェクトを既定の特殊変数として参照可能にしている。

変数名 内容
$0 現在実行中のRubyプログラムのファイル名
$: require関数やload関数がライブラリをロードするために参照するフォルダ名の配列
$DEBUG デバッグモードならtrueが設定される変数。Rubyデバッグモードで実行するには-dを指定する
$stdin 標準入力。既定ではコンソール入力が割り当てられる
$stdout 標準出力。既定ではコンソール出力が割り当てられる
$stderr 標準エラー出力。既定ではコンソール出力が割り当てられる
$* Rubyプログラムに与えられた引数を格納した配列

Array#each

Array#eachメソッドとはブロック引数をとり、ブロック変数として配列内の要素を順番に与えて処理できる。

例)

array = "日,月,火,水,木,金,土".split(",")
array.each do |str|
  puts "#{str}"
end

上記をfor文で

array = "日,月,火,水,木,金,土".split(",")
for i in 0..array.size-1
  puts "#{array[i]}"
end

またインデックス値を1つずつ増やしたり、1つずつ減らしたりするのには、Integer#uptoやInteger#downtoのが処理が見やすくなるかもしれない。

String#each_char

先頭から末尾まで順に1文字ずつブロック変数に設定して、ブロック引数を呼び出す。

str= "日月火水木金土"
str.each_char do |s|
  puts "#{s}"
end

条件式2

条件が成り立たなければ処理するという条件分岐式がある。
以下2つは同じ意味である。
if !条件式
unless 条件式

ライブラリの作成

いままでどおりにプログラムを組むだけでそれをライブラリとして利用できる。その際にいくつか注意点。
ファイル名は全て小文字。またクラス名や関数名に「_」を利用している場合はファイル名には「-」を付ける。

そんな日。