- - 目次

組込み関数



組込み関数

Rubyには厳密な意味では関数はありませんが, Kernel クラスで定義されているメソッドも一部は(全ての通常クラスから 関数形式で呼び出せるので),一般の言語における関数のように用 いられます.これらのメソッドを再定義する際には互換性を考えて 行なう必要があります.

` str

strをコマンドとして実行し,その出力を文字列として 返します.このメソッドは`str`の形式で呼ばれます.

Array(arg)

引数を配列に変換します.

Float(arg)

引数を浮動小数点数に変換します.

Integer(arg)

引数を整数に変換します.

String(arg)

Kernel#to_sを用 いて,引数を文字列に変換します.

autoload(module, file)

moduleに最初にアクセスした時にfilerequireするように設定し ます.moduleは文字列またはシンボルで指定します.

binding

evalの第2引数として指定できる変数とメソッドの結 合情報を含むデータ構造を返します.

break
break!

もっとも内側のループから脱出します.break!breakが再定義された時のための別名です.

caller([level])

level段上の呼出し元の情報を$@の形式 のバックトレース(文字列の配列)として返します.トップレベルで はnilを返します.callerの戻り値を $@に代入することで例外の発生位置を設定できます. 以下のようなコードで呼出し関係のスタックトレースを表示できま す.

for c in caller(0)
  print c, "\n"
end

catch(tag){...}

イテレータブロックを評価してその値を返します.イテレータブロッ クの実行中に tag で指定されたのと同じ名前の throw が行われた場合は,その throwの値を戻り値とします.

例えば以下のコードは10ではなく,25を返して, some_processは呼び出されません.

def throw_exit throw :exit, 25 end catch(:exit) { throw_exit some_process; 10; }

chop
chop!

システム変数$_を最後の文字を取り除いたものにし ます(終端が"\r\n"であれば2文字取り除きます). chop!は文字列そのものを変更します.

eof
eof?

コマンドラインからの入力がEOFに到達している場合, 真を返します.

eval(expr)

exprとして与えられた文字列をrubyプログラムとして 解釈,実行します.省略可能な第2引数としてProcオ ブジェクトまたはbindingの戻り値である結合情報を 与えた場合,文字列をその環境で解釈,実行します.

exec(command)

commandで指定されたコマンドを子プロセスとして起動 します.起動に成功した場合,この関数からは戻りません.

複数の引数を指定した場合は,shellを経由せずに実行されます. この場合には空白やshellのメタキャラクタもそのまま渡されます.

exit([status])

rubyプログラムの実行を終了します.statusとして整 数が与えられた場合,その値をrubyコマンドの終了ステータスとし ます.デフォルトはの終了ステータスは0です.

exitは大域脱出 SystemExit を発行す ることによってプログラムの実行を終了させますので, 必要に応じてrescue節で捕捉することができます.

exit!([status])

整数statusを終了ステータスとして,rubyプログラム の実行を終了します.exit!exitと は違って,例外処理などは一切行ないません. forkの後, 子プロセスを終了させる時などに用いられます.

fork

fork(2)システムコールを使ってプロセスの複製を作 ります.親プロセスでは子プロセスのプロセスIDを,子プロセスで はnilを返します.イテレータとして呼び出された場 合には,生成した子プロセスで,イテレータブロックを評価します.

getc

標準入力から一文字読み込みます.読み込む文字が無い時には nilを返します.

gets([rs])
readline([rs])

引数として与えられたファイル(なければ標準入力)をつなげた仮想 的なファイル(システム変数$<でアクセスできる) から一行読み込んで,文字列を返します.ファイルの終りに到達し た時にはnilを返します.行の区切りは引数 rsで指定した文字列になります.rsのデフォ ルト値はシステム変数$/の値です.読み込んだ文字 列はシステム変数$_にもセットされています.

readlinegetsと同じ働きをしますが, EOFで例外EOFErrorを発生させます.

gsub(pattern[, replace])
gsub!(pattern[, replace])

システム変数$_の指す文字列内で patternにマッチする部分を全てreplaceに 置き換えた文字列を返します.引数replaceが省略され た時にはイテレータとして動作し,ブロックを評価した結果で置換 を行います.gsub!$_の指している 文字列そのものを書き換えます.gsubメソッドは $_の値をコピーして,コピーの方を更新し, $_に代入します.

iterator?

メソッドがイテレータとして呼び出された時には真,そうでない時 に偽を返します.

load(file)

fileから ruby プログラムをロード・実行します. fileをロードするパスはシステム変数$: で決定されます.

loop

(中断されない限り)永遠にイテレータブロックの評価を繰り返しま す.

next
next!

nextはもっとも内側のループの次の繰り返しにジャ ンプします.nextを再定義してしまった場合に備え てnext!という別名が定義されています.また C ファンのために continue という別名も定義されています.

open(file[, mode])

fileをオープンして,Fileオブジェクトを返します. modeは,"r", "r+", "w", "w+", "a", "a+"のいずれかでファイルのアクセスモードを指定 します.fopen(3)を参照してください.

ファイル名が|で始まる時には続く文字列をコマンド として起動し,コマンドの標準入出力に対してパイプラインを生成 します.

注意: perlと異なりコマンドは`|'で 始まります.

コマンド名が"-"である時,openは rubyの子プロセスを生成し,その子プロセスとの間のパイプを返し ます.

pipe

pipe(2)を実行して,相互につながった2つの IOオブジェクトを要素とす る配列を返します.最初の要素が読み込み側で,次の要素が書き込 み側です.

print(arg1...)

引数を順に出力します.引数が与えられない時には変数 $_の値を出力します.文字列以外のオブジェクトが 引数として与えられた場合には,当該オブジェクトを文字列に変換 してから出力します.

変数$;(出力フィールドセパレータ)に nilでない値がセットされている時には,各引数の間 にその文字列を出力します.変数$\(出力フィールド セパレータ)にnilでない値がセットされている時に は,最後にそれを出力します.

printf([port, ]format, arg...)

C言語のprintfと同じようにformatに従い引数を文字列 に変換して出力します.第1引数がIOのサ ブクラスのインスタンスであった場合はそのオブジェクトに対して 出力を行ないます.デフォルトは$stdoutに出力しま す.Rubyにおけるformat指定子の拡張については sprintfの項を参照してください.

proc
lambda

与えられたイテレータブロックから手続きオブジェクト(クラス Procの インスタンス)として返します.

raise([error_type,][message])
fail([error_type,][message])

例外を発生させます.引数が無い場合,直前の例外を再発生させます. 引数が一つの場合,引数が文字列であれば,その文字列をメッセー ジとする RuntimeError 例外を発生させ,引数が例外オブジェクトであった場合にはその例外を発生 させます.引数が二つの場合,第一引数で指定された例外を,第二引数を メッセージとして発生させます.この場合,例外は例外クラスまた は例外オブジェクトで指定します.

発生した例外は変数 $! に格納されます.また例外が 発生したソースコード上の位置は変数 $@ に格納され ます.

raise には fail という別名が定義さ れています.

rand(max)

0からmaxを越えない範囲の整数の乱数を発生します (maxは正の整数). srandが呼ばれない限り, この関数は毎回同じ乱数の並びを返します.

readlines([rs])

引数として与えられたファイル(なければ標準入力)をつなげた仮想 的なファイルを全て読み込んで,その各行を要素としてもつ配列を 返します.

行の区切りは引数rsで指定した文字列になります. rsのデフォルト値はシステム変数 $/の値 です.

require(feature)

featureで指定される ruby ライブラリを必要に応じて ロードします.featureはロードするライブラリを指定 する文字列で,拡張子.rbが指定されている時はruby スクリプト,拡張子.oが指定されている時は,バイ ナリモジュールをロードします.ただし,いくつかのアーキテクチャ ではバイナリモジュールのロードは提供されません.バイナリモジュー ルの拡張子はアーキテクチャ毎に ".so"などと異なっ ていますが,feature名の拡張子はいつも .oを用います.

requireは実際にロードした時には TRUE,既にロー ドされている時にはFALSEを返します.またロードし たfeatureの名前を(拡張子も含めて),変数 $"に追加します.

redo
redo!

ループ条件のチェックを行なわず,現在の繰り返しをやり直します. redoが再定義されてしまった場合に備えて, redo! という別名も定義されています.

retry
retry

begin式のrescue節で使われた場合, begin式を始めからもう一度実行します.

イテレータ,イテレータブロックまたはfor文の中で使われた場合 には,そのイテレータを起動しなおします.

retryが再定義されてしまった場合に備えて, retry! という別名も定義されています.

select(reads[, writes[, excepts[, timeout]]])

`select(2)'を実行します. reads/writes/execptsには入 力待ちするIO (またはそのサブクラス)の インスタンスの配列をわたします.

timeoutは整数, Float, Time, または nil を指定します.nil を指定した時 にはIOがレディ状態になるまで待ち続けます.

戻り値はtimeoutした時にはnilを,そう でないときは3要素の配列を返し,その各要素が入力/出力/例外待 ちのオブジェクトの配列です(指定した配列のサブセット).

sleep([sec])

sec秒だけプログラムの実行を停止します. secが省略された場合,明示的に起こさない限り (SIGALRMまたは他threadからのrun), 永久にスリープします.戻り値は実際にスリープした秒数です.

split([sep[, limit]])

変数$_に格納された文字列をsepで指定さ れたパターンによってlimit個の要素に分割して配列に 格納します. 詳細はString#split を参照してください.

sprintf(format...)
format(format...)

format文字列をC言語のsprintfと同じよ うに解釈し,引数をフォーマットした文字列を返します. format指定子はC言語のsprintfが受け付 けるものに加えて, %b, %B, %O, %Xを使うことができます.%bは数 値の2進表示,%B, %O, %Xはそれぞれ2進,8進,16進数の表示を行 ないますが,負の数の処理の際に2の補数表現ではなく,その絶対 値表記の先頭に-をつけたものを表示します.

srand([seed])

randの乱数の seedを設定し,古い初期値を返します.初期値が省略 された時には現在の時間を種にします.

sub(pattern[, replace])
sub!(pattern[, replace])

システム変数$_の指す文字列内で patternにマッチする最初の部分をreplaceに 置き換えた文字列を返します.引数replaceが省略され た時にはイテレータとして動作し,ブロックを評価した結果で置換 を行います.sub!$_の指している 文字列そのものを書き換えます.sub$_の値をコピーして,コピーの方を更新し, $_に代入します.

syscall(num, arg...)

numで指定された番号のシステムコールを実行します. 第2引数以降をシステムコールの引数として渡します.引数は文字 列または整数でなければなりません.

system(command...)

commandを実行して,成功した時(サブプロセスが status 0で終了した時)には真を,失敗した時には偽を返します. 終了ステータスは変数$? で参照できます.

複数の引数を指定した場合は,shellを経由せずに実行されます. この場合には空白やshellのメタキャラクタもそのまま渡されます.

test(cmd, file [, file])

ファイルテストを行います.cmdは以下に示す文字リテラル です.

  • 1つの引数を取るもの

    ?r
    ファイルを実効 uid で読むことができる
    ?w
    ファイルに実効 uid で書くことができる
    ?x
    ファイルを実効 uid で実行することができる
    ?o
    ファイルの所有者が実効 uid である
    ?R
    ファイルを実 uid で読むことができる
    ?W
    ファイルに実 uid で書くことができる
    ?X
    ファイルを実 uid で実行することができる
    ?O
    ファイルの所有者が実 uid である
    ?e
    ファイルが存在する
    ?z
    ファイルサイズが 0 である
    ?s
    ファイルサイズが 0 でない(ファイルサイズを返す)
    ?f
    ファイルはプレーンファイルである
    ?d
    ファイルはディレクトリである
    ?l
    ファイルはシンボリックリンクである
    ?p
    ファイルは名前つきパイプ(FIFO)である
    ?S
    ファイルはソケットである
    ?b
    ファイルはブロック特殊ファイルである
    ?c
    ファイルはキャラクター特殊ファイルである
    ?u
    ファイルに setuid ビットがセットされている
    ?g
    ファイルに setgid ビットがセットされている
    ?k
    ファイルに sticky ビットがセットされている
    ?M
    ファイルの最終更新時間
    ?A
    ファイルの最終アクセス時間
    ?C
    ファイルの inode 変更時間

  • 2つの引数を取るもの

    ?=
    ファイル1とファイル2のタイムスタンプが等しい
    ?>
    ファイル1の方がファイル2より更新時間が新しい
    ?<
    ファイル1の方がファイル2より更新時間が古い
    ?-
    ファイル1がファイル2にハードリンクされている

throw(tag[, value])

Casts an non-local exit to the enclosing catch waiting for tag, or terminates the program if no such catch waiting. The tag must be the name of the non-local exit, which is either a symbol or a string. catch may not appear in the same method body. the value will be the return value of the catch. The default value is the nil.

trace_var(variable, command)
trace_var(variable) {...}

varで指定された大域変数の値が変更された時に評価さ れる文字列,または手続きオブジェクトをcommandで指 定します.traceを解除するためにはcommandnilを指定するか, untrace_varを用います.

trap(signal, command)
trap(signal) {...}

signalで指定された割り込みにたいするハンドラとし てcommandを指定します.signalはシグナ ル名かシグナルの番号,commandは文字列,またはブロッ クで指定します.commandとして"SIG_IGN"または "IGNORE"を指定した時にはそのシグナルを無視しま す(可能ならば)."SIG_DFL"または "DEFAULT"を指定した時はデフォルトの動作を行なう. "EXIT"を指定した時はシグナルを受け取ると(終了処 理を行った後),exit status 0で終了する.

シグナル 0 または "EXIT" はプログ ラムの終了を表しています."EXIT" のハンドラはイ ンタプリタの実行終了直前に呼び出されます.

ungetc(char)

charを読み戻します.1バイト以上の読み戻しは保証さ れません.

untrace_var(variable[, command])

variableに対するcommandで指定したtrace を解除します.commandを省略した場合や commandとしてnilを指定した場合には varに対する全てのtraceを解除します.削除された traceとして指定されていたオブジェクトを配列にいれて返します.


- - 目次

matz@caelum.co.jp