From 200e0ee2fd3c1c006c528874a88f684447215524 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Mon, 18 Jul 1994 10:19:15 +0900 Subject: version 0.49 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.49.tar.gz Mon Jul 18 10:19:15 1994 Yukihiro Matsumoto (matz@ix-02) * parse.y: 多重代入を処理するルールにバグがあって, 3要素以上の多重 代入に失敗していた. * eval.c(rb_eval): 多重代入で, 右辺が配列でない時には`to_a'メソッ ドで配列に変換して代入するようにした. 今までの仕様だと右辺値が第 1要素にそのまま代入されていたが, structなど配列に変換できるもの は変換した方が嬉しい気がする. * dbm.c,dict.c(delete_if): メソッド追加. * process.c(wait,waitpid): システムコールwaitpidまたはwait4がある 時はそちらを使うように. configureもそれらをチェックするように変更. * dbm.c, dict.c(clear): メソッド追加. Fri Jul 15 10:54:45 1994 Yukihiro Matsumoto (matz@ix-02) * array.c(Fary_fill,Fary_clear): メソッドを追加. * string.c(Fstr_split): $;の値が長さ1の文字列である時, これを正規 表現化しないで, 単なる文字として分割する. * string.c(Fstr_aset/Fstr_aref): インデックスが文字列の範囲外だっ た時の動作をArrayを参考に修正した. * array.c(astore,Fary_aset): 領域をreallocした後, ゼロでクリアする ように. 今まで配列にゴミが入っていた. * array.c: []/[]=でのインデックス関係を整理. 基本的に負のインデッ クスに代入しない限り例外は起きないように変更した. 必要に応じて適 当に解釈して, 必要ならば領域を拡張するように. Thu Jul 14 11:18:07 1994 Yukihiro Matsumoto (matz@ix-02) * autoexec.c: 削除. autoload関係の機能は今後検討しよう. * dict.c: 辞書クラスの正式名称をDictに変更した. 別名としてHashを用 意した. 今までDictionaryなどと長い名前にしていたが誰も使っていな かったしね. *BACKWARD INCOMPATIBILITY* * parse.y: Dictを生成する構文を追加. こちらを{..}にした. * parse.y: 配列を生成する構文を[..]に変更した. 過去のRubyスクリプ トとの互換性が保てないが, Dictを生成する構文を導入するに当たり, perl5に合わせて(意識して), 変更する時期は今しかないと考えた. *BACKWARD INCOMPATIBILITY* * eval.c(Feval): eval()でメソッドを定義する時, 定義されるクラスを メソッドの所属するクラスにした. 今まではObjectクラスに定義されて いた. * parse.y: ローカル引数がない時のeval()で落ちていた. Thu Jul 14 11:18:07 1994 Yukihiro Matsumoto (matz@ix-02) * eval.c: メソッドが存在しない時にはKernel:_undefined(id)が呼ばれ るように. しかし, rubyでは個々のメソッド毎の処理よりも, クラス 単位の処理が必要な気もするなあ. * autoexec.c: 削除. autoload関係の機能は今後検討しよう. * dict.c: 辞書クラスの正式名称をDictに変更した. 別名としてHashを用 意した. 今までDictionaryなどと長い名前にしていたが誰も使っていな かったしね. *BACKWARD INCOMPATIBILITY* * parse.y: Dictを生成する構文を追加. こちらを{..}にした. * parse.y: 配列を生成する構文を[..]に変更した. 過去のRubyスクリプ トとの互換性が保てないが, Dictを生成する構文を導入するに当たり, perl5に合わせて(意識して), 変更する時期は今しかないと考えた. *BACKWARD INCOMPATIBILITY* * eval.c(Feval): eval()でメソッドを定義する時, 定義されるクラスを メソッドの所属するクラスにした. 今まではObjectクラスに定義されて いた. * parse.y: ローカル引数がない時のeval()で落ちていた. Tue Jul 12 09:41:28 1994 Yukihiro Matsumoto (matz@ix-02) * pack.c: uuencode形式のサポート. * `-0'を`-R'に. 出力レコードセパレータをコマンドラインから指定する 方法はなくなった. どうも, 仕様がゆれるなあ. Mon Jul 11 09:51:24 1994 Yukihiro Matsumoto (matz@ix-02) * ruby.c: `-r'オプションは`-0'オプションになった. 当面は`-r'も有効 だが変更される可能性がある. `-R'は当面はそのまま. * version.c: version表示に日付を含めた. * parse.y: private methodの復活. RubyのprivateメソッドはC++におけ るprotected methodに該当するもので, `@'で始まる名前を持つ. * env.h: struct ENVIRONの定義を分離. * parse.y: `\$var', `\@var', `%var'も許すように. * variable.c(Fdefined): idも引数として受け付けるように. * parse.y: if文/unless文にキーワードthenを追加. thenなしというのは, 意外と間違いが多いので. もちろん省略できる. Sat Jul 9 02:16:04 1994 Yukihiro Matsumoto (matz@dyna) * eval.c(rb_eval): class/moduleの評価で新しいスコープを割り当てて いなかった. スコープ割り当て部分をrb_call()からrb_eval()に移した. * eval.c(rb_call): realloc()に渡される事のある, ローカル変数用の領 域をalloca()していた. たまに落ちるわけだ. * string.c(Fstr_times): 割り当てた領域を越えた部分を変更していた. Wed Jul 6 15:52:42 1994 Yukihiro Matsumoto (matz@ix-02) * socket.c: Socket -> BasicSocket, RawSocket -> Socket に改名. * string.c(ucfirst,lcfirst): 最初の1文字だけの大文字/小文字変換. * numeric.c(chr): 整数の文字列化メソッド. * inits.c, dbm.c: DBMが使えない時はクラスそのものを定義しないよう にした. 利用できないクラスはnilとすることを今後のポリシーとしよ う(いままではアクセスした時点でエラーが発生していた). autoexec() のあり方も検討が必要になりそうだ. * bignum.c(bigadd): バグ修正. Thu Jul 7 11:12:18 1994 Yukihiro Matsumoto (matz@ix-02) * eval.c(Fload,Feval): eval_treeをクリアし忘れていた. * _inspect: オブジェクトを可読形式の文字列に変換する(主にデバッグ 出力用). Wed Jul 6 00:57:18 1994 Yukihiro Matsumoto (matz@dyna) * numeric.c, bignum.c: 整数に対する`[]'演算子. nビット目がセットさ れているかどうかを返す. Tue Jul 5 12:48:39 1994 Yukihiro Matsumoto (matz@ix-02) * io.c(Feof): 追加. コマンドラインからなる仮想ファイルについても EOFが検出できるように. * ruby.c: -l/-r/-R/-Xオプションの追加. * ruby.c: -n/-pオプションのloopの付加などをメインルーチンに移動し た. これで, オプションの解析途中で(`-c'オプションのせいで)終了な どといったことはない. * io.c(Fgets): 高速化. 凝ったことをしない方が速かった. 虚しい. Mon Jul 4 15:55:48 1994 Yukihiro Matsumoto (matz@ix-02) * Socket:getsockname/getpeername - ようやく仕様が安定した. * io.c(Fgets): eachでgetsを記述するのではなく, getsでeachを記述す るようにした. Fri Jul 1 10:35:49 1994 Yukihiro Matsumoto (matz@ix-02) * $ENV[env] = nil/$ENV.delete(env)で環境変数を削除できるようになっ た. $ENV.deleteは環境変数の以前の値を返す. * !~の定義が間違っていた. * Dict,DBM:[]= - nilの代入によって要素を削除できるようになった. こ れにともないnilはDictの要素になれなくなった. * ソースの整理. 盲腸のような使われていないコードをなくしたり, 変数 名を付け変えたりした. Fri Jul 1 00:21:29 1994 Yukihiro Matsumoto (matz@dyna) * Array:join() - 要素数0の配列に対して空文字列を返す. * RawSocket:open(),socketpair() - 文字列で指定できるドメインとタイ プをいくつか追加した. Thu Jun 30 13:51:29 1994 Yukihiro Matsumoto (matz@ix-02) * -fオプションをなくした. 昔(loadのなかった頃)の名残なので, 今となっ ては必要ないだろう. * -sオプションを追加. perlの-sオプションと同じ動きをする. * RawSocketクラスを提供する. Socketに対するシステムコールレベルの アクセスが可能になった. Thu Jun 30 00:27:19 1994 Yukihiro Matsumoto (matz@dyna) * Socket - bug fixes. * linuxではsyscall(SYS_select)が正常に動作しない. * Socket:addr,peeraddr - 配列としてsockaddrの情報を返す. Wed Jun 29 00:14:20 1994 Yukihiro Matsumoto (matz@dyna) * Socket:setopt,getopt - setsockopt(2), getsockopt(2)へのアクセス を実現. * sprintf() - rubyにはunsignedは無いので, %uを取り除いた. * sprintf() - %b, %x, %oでは2の補数表現, %B, %X, %Oでは符号付き表 現で出力するように. ここ数日でsprintf()の仕様がゆらいでいたが, これで落ち着きそうだ. Tue Jun 28 14:42:03 1994 Yukihiro Matsumoto (matz@ix-02) * Bignum:<<,>> - 2の補数をとる処理を除いた. シフト演算には関係ない 処理だった. * Bignum:^ - bug fix. 符合が反対だった. * sprintf() - 2進出力子"%b"を追加. * sprintf() - %x, %oでFixnumを出力する時, 2の補数表示を行なわない. * sprintf() - %x, %oはやはり負の数の時は`-'を出力するように. Mon Jun 27 14:56:13 1994 Yukihiro Matsumoto (matz@ix-02) * sprintf() - Bignumについても%d, %oは(2の補数表現に変換して)正の 整数を表示するようにした. * Bignumに対する論理演算の定義を修正した. 負の数は2の補数表現であ るとみなし, かつ仮想的に左側に無限に1が連続しているような演算結 果を得る. * Fixnum:<<,>> - 符合付シフトに変更. * Bignum:>> - 負の整数のシフトに対応した. * __END__, ^D, ^Zでスクリプトを終了できる. * -xオプションを追加. #! ..rubyなる行まで読み飛ばす. * -cオプションを追加. コンパイルのみを行う. Sat Jun 25 01:37:21 1994 Yukihiro Matsumoto (matz@dyna) * Fixnum:<< - 必要に応じてBignumに拡張して左シフトするように. よっ て, シフト幅が32を越えるとCやPerlとは違った値を返す. Fri Jun 24 10:01:28 1994 Yukihiro Matsumoto (matz@ix-02) * ioctl()/fcntl() - システムコールを呼び出す前にバッファの大きさを 調節するようにした. * String:toupper/tolower - 文字列を置き換えたコピーを作るのではな く, 元の文字列の内容を変更するようにした. * inplace editを実現した. perlと同じように`-i'オプションで指定する. もっとも, こちらはMS-DOSのこととか考えてないけど. * デフォルトの出力先を追加した. 今までは$stdoutに代入するしか方法 はなかった. Fri Jun 17 10:55:08 1994 Yukihiro Matsumoto (matz@ix-02) * 環境変数にアクセスする方法としてgetenv()/setenv()以外に$ENVを用 意した. $ENVは文字列-文字列の辞書であるかのように動作するEnvDict オブジェクトが代入されている(eachはassocを与える). * nilに代入するとcore dumpした. コンパイル時のチェックを強化. * Struct: struct_new()の引数をGCプロテクトする必要がある. せめてス タック領域だけでもスキャンできるようにしなければいけないんだろう か? でも, 移植性がなあ. Fri Jun 17 01:01:46 1994 Yukihiro Matsumoto (matz@dyna) * Time::asctime() - 日付のフォーマットで日が落ちていた. * Stat: StatはEtcなどと同様にStructで実現したので, Statクラスは無 くなった. Thu Jun 16 10:32:23 1994 Yukihiro Matsumoto (matz@ix-02) * bignum.c: いくつかのバグを修正した. Fixnumを渡すべきところで普通 のintを渡していた. 失敗. * big2str() - 1桁ずつbaseで割る代わりに, 4桁ずつ割算を行なうように した. これで多倍長割算の回数が1/4になる. さらに整数->数(文字)へ の変換をテーブルを用いるようにした. * rb_ivar_get_1() - すでに何らかのインスタンス変数を持つオブジェク トでは, 未定義のインスタンス変数の値が不定値になっていた. * yylex() - インスタンス変数の認識に失敗していた. attr()は正しく動 作していたので, 混用すると動作しなかった. 全部違っていたから動い ていたのね. * Object:attr() - すでにアクセスメソッドが定義されている時にはデフォ ルトのアクセスメソッドを定義しないようにした. もっともアクセスメ ソッドと同名のメソッドの区別はRubyには存在しないけど, それは仕方 がないよね. * pack.c: エンディアンをautoconfで判定するようにしたので, v/Vが使 えるようになった. またntoh?()/hton?()も自前で用意した. * Stat: st_rdevをアクセスするメソッドを追加. さらにシステムがstat 構造体にst_blksize, st_blockを持っているかをautoconfでチェックす るようにした. * ドキュメントを少し整備した. * INT2FIX()のうち, 31bit幅が保証できないものは, int2inum()に置き換 えた. Wed Jun 15 10:18:27 1994 Yukihiro Matsumoto (matz@ix-02) * sprintf() - bignumの出力の時, 出力幅を正しく計算するようにした. * str2inum() - baseが0の時, baseを自動判定するように(0xで始まる時 16 進, 0で始まる時8進). Tue Jun 14 16:08:42 1994 Yukihiro Matsumoto (matz@ix-02) * gc.c: Bignumを追加するのを忘れていた. 組み込み型を追加した時には 必ずmark()とsweep()にその型に関する処理を追加する必要がある. * bignum: 割算も動いたような気がする. アルゴリズムを理解していない ので, 自信がない. Mon Jun 13 14:36:55 1994 Yukihiro Matsumoto (matz@ix-02) * まだサポートしていないメソッドなどがあるが, 曲がりなりにもBignum が使えるようになる. これでioctlも使える. Fri Jun 10 17:26:42 1994 Yukihiro Matsumoto (matz@ix-02) * Comparable: 基礎となるメソッドを`=='と`>'から`<=>'に変更した. 今 後Comparableのサブクラスは`<=>'だけを定義する必要がある. Wed Jun 8 13:12:18 1994 Yukihiro Matsumoto (matz@ix-02) * Need_Fixnum()をほとんどなくして, NUM2INT()で直接intに変換するこ とにした. これで31bitに丸めて桁落ちをおこす問題がなくなる. Tue Jun 7 09:45:31 1994 Yukihiro Matsumoto (matz@ix-02) * ruby.h: マクロFIXABLE(n)を追加. ついでにFIXNUM周りの定義を変更し て, 移植性を高めた(つもり). * C++の予約語であるnewを削除した. しかし, もうひとつの予約語である classに関しては, 置き換える単語が思いつかないこともあってそのま まになっている. * 31bitを越えそうなINT2FIX()を関数呼び出しに変えた. 将来bignumが導 入された時には自動的にbignumを返すようにする. * readline() - 引数の`-'は標準入力を意味するようになった. * ruby.h: 右シフトが論理シフトか算術シフトかは処理系依存のようなの で, ruby.hでcppを使ってチェックするようにした. これでうまくいく と思うのだが, 手元に符合付intを論理シフトする処理系がないので確 認できない. NEWS-OSのCCは確か右シフトはいつも論理シフトだったよ うな気がするんだけど…. Mon Jun 6 10:10:22 1994 Yukihiro Matsumoto (matz@ix-02) * FIX2INT()の定義を変更した. どうして昔はうまく動かなかったんだろ うか? もしかして, 右シフトの符号拡張は処理系依存? * FIX2INT()とFIX2UINT()を使い分けるようにした. もっともfixnumは31 ビットしかないので, 本質的な解決にはならないのだが(ioctlが組み込 みたかった). * printを関数的メソッドから通常メソッドに変更. 引数が与えられない 時にはレシーバをプリントするようにした. これでprintをメッセージ 形式でも実行できるようになった. 例: ruby -e 'readlines().sort.print' 上のスクリプトは, 引数として与えられた(あるいは標準入力から読み 込まれた)文字列を各行毎にソートして表示する. * eval.c: argc,argvパターンで引数を受けるメソッドに引数が一つも与 えられない時, argvがnilになっていた(argv[0]にアクセスすると落ち てしまう). * _exit()を追加. こちらは例外処理など行なわない. * dbmクラス: クラス名称をDBM(大文字)に統一した. Sat Jun 4 00:51:04 1994 Yukihiro Matsumoto (matz@dyna) * ループ変数にも属性や配列要素を指定できるようにした. Fri Jun 3 09:49:48 1994 Yukihiro Matsumoto (matz@ix-02) * 多重代入において, 属性代入, 配列要素への代入も行なえるようにした. * Need_Fixnum(): nilを0に変換するように. * Enumerable:min, max, index, includes - 追加. min, maxは要素が `<=>'メソッドを持つことを仮定している. * Dict/Dbm:length - 要素数を返すメソッド. * Dbmクラスにto_aメソッドを追加. * Sunにおけるsortの誤動作の件, 昨日の修正でfixされた. しかし, それ でなぜ動かなかったのかは明らかではないが…. 比較関数がどんな値を 返しても指定した領域外をアクセスするのはバグではないか. * ファイルの全内容を読んで, 各行を配列として返すメソッドはpythonを 参考にして`readlines'という名前にした. それにともないgetsに対し てreadlineという別名を用意した. Fri Jun 3 00:08:38 1994 Yukihiro Matsumoto (matz@dyna) * Array:sort - 判別関数の戻り値はFixnumではなく, Intであるべきだっ た. 間違い. Sunで動作がおかしかったのはこのせいかも知れない. Thu Jun 2 11:48:37 1994 Yukihiro Matsumoto (matz@ix-02) * IO:read_all() - ストリームの最後まで入力して, 各行を要素とする配 列を返すメソッドを追加. また関数メソッド read_all()も追加した. これは引数のファイルから読み込んで各行を要素とする配列を返す. 意 味的には def read_all() ary = {} while gets() ary.push($_) end end とほぼ等価である. * String:atoiメソッドを削除. to_aメソッドからaが配列であるとの連想 を呼んで, 混乱を招かないため. 代わりにto_iメソッドを使うこと. * 配列への変換メソッドto_aを導入した. 通常のオブジェクトは自分自身 を唯一の要素とする長さ1の配列を返す. 配列は自分自身を, 辞書はキー と値のペアの配列を返す. Enumeratedをincludeしたクラスは, eachが 返す各要素を含む配列を返す. * file.c: 不定個の引数を受けとるメソッド(chmod,chown,utimes)を書き 換えて, 整理した. それに伴い, 最初に全ての引数の型チェックを行な うようにした. 型チェックに失敗すると処理を行なわずに例外を発生さ せる. * configure.in: 不必要なテストを行なわないように修正した. Tue May 31 10:41:08 1994 Yukihiro Matsumoto (matz@ix-02) * String:pack(): 2進数の文字列変換(B,b)で0と1が逆だった. * Math.c: 実数系のメソッドに引数として整数が渡された時に自動的に変 換するようにした. * toupper(), tolower(): 文字列の判定ミスで変換されていなかった. * getopt_long()の仕様によって, スクリプトへの引数がインタプリタの 引数だと解釈されていた. 引数パターン文字列の先頭に`+'を追加. * config.hを削除した. DEFINEはMakefileで与えられる. * sprintf(): "%d"に文字列が与えられた時にはアドレスではなく内容を 整数に変換するようにした. ついでに浮動小数点数も変換するように変 更した. * regexp.c: rubyの拡張正規表現(\d, \D, \s, \S)の処理で割り当てた領 域を越えてバッファに書き込んでいた. 処理前にバッファをきちんと拡 張するようにした. これで昨日問題にしていたメモリの問題は解決でき たと思う. * yylex(): ダブルクォート文字列中でダブルクォートを表現するため のバックスラッシュ表現ができなかった. Mon May 30 10:07:42 1994 Yukihiro Matsumoto (matz@ix-02) * 演算子`!'の右辺も条件式であるとした. これによって, この演算子を 再定義する人は混乱するかも知れないが, 大多数のこの演算子を使う人 は混乱を避けることができると思う. * autoconfを使って, 自動的にMakefile, config.hを生成するようにした. これで, 大抵のマシンでは`configure'を実行した後, `make'一発でコ ンパイルできると思う. * clone: サブクラスに対して用いられた場合, 元のオブジェクトと同じ クラスのインスタンスを返すように(以前はビルトインクラスの場合を 考えてなかった). * ビルトインクラスのサブクラスも作れるように, リテラルのあるクラス にもnewメソッドを追加した. * malloc()で落ちる. purifyが必要かも知れない. * re.c: rb_global_variable()の呼びだし形式の間違い. 変数へのポイン タを渡さなければいけない. * parse.y: ローカル変数の扱いに引数の評価順に依存する移植性のない 部分があった. * attr(): 属性設定のバグを直した. いつ内部仕様が変わったんだろう…? Sat May 28 23:08:18 1994 Yukihiro Matsumoto (matz@dyna) * 正規表現キャッシュの文字列一致判定をポインタ一致から内容一致に変 更した. そういえば文字列リテラルは一回毎に新しくオブジェクトが生 成されるのだった. Fri May 27 11:42:00 1994 Yukihiro Matsumoto (matz@ix-02) * 正規表現の文字コードのデフォルトを漢字非対応にした. これによって 若干の高速化が図れる. * trから文字削除(delete), 文字圧縮(squeeze)を分離した. それにとも ないtrのオプション引数はなくなった. Thu May 26 10:32:55 1994 Yukihiro Matsumoto (matz@ix-02) * スクリプト読み込みルーチンを書き直して, 通常ファイル以外のファイ ル名や空文字列がスクリプトとして与えられた場合に対応した. また, 標準入力からスクリプトを読み込む時に, 一時ファイルが/tmpに残らな いようにした. * Fixnum:id2name - IDから文字列に戻す関数. String:internの逆. * Array: 配列の範囲外の要素をアクセスした時に例外を発生させずに, nilを返すようにした. 配列は自動的に拡張される. * string:stripを追加. * -nオプションが-eオプションを複数指定した時も動作するように. * parse.yでもインクルードするようにした. * fname周りの細かいbugを修正. Wed May 26 11:45:10 1994 Yukihiro Matsumoto (matz@dyna) * 定数をキャッシュするようにした. 繰り返しが多い場合には有効のはず だが, 一度しかアクセスしない場合は遅くなるなあ. Wed May 25 00:42:24 1994 Yukihiro Matsumoto (matz@dyna) * 多重代入文(foo, bar = 1, 2)の採用. * 条件式部に文字列あるいは正規表現リテラルをおくと`=~'演算子によっ て`$_'と比較される. 更に`...'の両辺では整数リテラルが`$.'と比較 される. Mon May 23 23:27:03 1994 Yukihiro Matsumoto (matz@dyna) * &式 形式はなくなった. 代わりにkernel:apply(id, args..)を導入. * def op () ..形式の導入. opは再定義可能な演算子. * constantの代入時チェック. 既に初期化されている定数に代入した場合 は例外が発生する. * 多重代入文. Thu May 19 22:57:07 1994 Yukihiro Matsumoto (matz@dyna) * 複合文でもvoid valueのチェックを行うようにした. * untilの動作の修正(do..until型だった). Wed May 18 01:06:25 1994 Yukihiro Matsumoto (matz@dyna) * 移植に関する若干の問題を修正. * 別名の構文を「def a b」にした. * until/unless: 演算子から制御文へ. 例外を捕捉する機能はそのまま. * 選択可能な機能をconfig.hからdefines.hに移動. Fri May 13 23:20:21 1994 Yukihiro Matsumoto (matz@dyna) * -yオプションを新設. -dオプションからコンパイラのデバッグ部分を分 離した. Tue Apr 25 20:17:33 1994 Yukihiro Matsumoto (matz@dyna) * マルチバイト文字列を識別子に使えるように. 個人的には使いたくは無 いけどなあ. * `-v'フラグの状態を$verboseでアクセスできるように. * CVSの導入に伴い, バージョン管理の方法を変更. * 真面目にChangeLogをつける事にした. Tue Mar 8 10:09:25 1994 Yukihiro Matsumoto (matz at nws119) * %変数名 によるクラス定数を導入. * undef メソッド によるメソッド定義の取り消しを導入. * rb_get_method_bodyではthe_envを変更せず, rb_call()で明示的に変更 するように. これでresponds_toなどで環境が破壊されない. Mon Mar 7 17:46:15 1994 Yukihiro Matsumoto (matz at nws119) * 「&文字列」形式. 「式.文字列」型のメッセージセンドはなくなった. * 自己代入形式(+=. -=, ...) * obj.attr = expr形式の採用. Thu Feb 24 16:23:28 1994 Yukihiro Matsumoto (matz at nws119) * toint, tofloat, print_stringをそれぞれto_i, to_f, to_sに変更. * String:clone - Copy on Writeの実現. Tue Feb 22 11:11:44 1994 Yukihiro Matsumoto (matz at nws119) * re.c: マッチした文字列の保存に失敗していた. * trap: 可能ならば処理に時間のかかるシステムコール(read, wait, sigpause, select)をフックして割り込み処理の即答性を高める(DOSな どでは無理だなあ). * trap: 割り込みをその場で処理するか(迅速だが危険), 安全なタイミン グで処理するかを選択できるように. Tue Feb 17 11:11:12 1994 Yukihiro Matsumoto (matz at nws119) * trap: 割り込みハンドラ. Wed Feb 16 12:29:12 1994 Yukihiro Matsumoto (matz at nws119) * String:crypt: 暗号化ルーチン * "::"演算子の追加. a::b は {a, b}と同義. a::b::c は {a, {b, c}}と 同義(右結合). 同義とはいうものの, "::"演算子を使った方が少しだけ メモリ効率が良い. * Dir.rmdir(), File.unlink(), File.utime() -- 各システムコールへの インタフェース. * kill -- kill(2) I/F * select(): readのチェックではstdioにバッファリングされているかど うかをチェックするように. Tue Feb 15 15:08:31 1994 Yukihiro Matsumoto (matz at nws119) * file.c: statをキャッシュするように. * File:utime()を追加. * unliteralize(): フラグを破壊していた. * Bug(): coreを吐くように. * String:tr -- tr(1)互換. 引数パターンがちょっと違うけど…. Mon Feb 14 18:24:13 1994 Yukihiro Matsumoto (matz at nws119) * unless, untilが例外も偽と見なすように. * select() -- select(2) I/F * Array:pack, String:unpack: perlのpack/unpackの同等品 Tue Feb 8 17:11:10 1994 Yukihiro Matsumoto (matz at nws119) * setenv()のないシステムのためにputenv()を使ったコードも用意した. Mon Feb 7 09:52:44 1994 Yukihiro Matsumoto (matz at nws119) * 引数の一番最後に`*'を置けるようにした. これでrest引数のリストを 操作する必要が少なくなる. Fri Feb 4 18:23:26 1994 Yukihiro Matsumoto (matz at nws119) * ruby-mode.elを書き直す. ずいぶんましになったと思う. * 文字列リテラルのCopy on Writeを実現. これで文字列がリテラルであ るからといっていちいちcloneしなくても済む. Tue Feb 1 09:21:09 1994 Yukihiro Matsumoto (matz at nws119) * sub(), gsub()で, マッチした文字列を$&, $1..$9でアクセスできるよ うにした. 同時にマッチした部分文字列をコピーしておくように(元の 文字列が変更されても状態を保存するため). Mon Jan 31 15:16:58 1994 Yukihiro Matsumoto (matz at nws119) * プライベートメソッドの仕様を変更. 今までは同じクラスのメソッドか らしかアクセスできなかったが, サブクラスのメソッドからもアクセス できるようにした(C++におけるprotected メンバ関数). * メソッドサーチのアルゴリズムを改善し, 10%程度の高速化を行なった. * 高速化. Cで記述されたメソッドを呼び出す時にはsetjmpを呼ばないよ うにした. これでCメソッドを多用する場合には3倍程度高速になった. Fri Jan 28 15:44:04 1994 Yukihiro Matsumoto (matz at nws119) * sh-modeを元にruby-mode.elを作る. 演算子で終る, 2行に渡る文には対 応していないけど…. Thu Jan 27 11:35:19 1994 Yukihiro Matsumoto (matz at nws119) * freenode(): NODE_NILの解放忘れ. * 字句解析部のバグ修正(コメントの後の状態を戻し忘れ). * protect .. endのバグ修正. GC_LINKのネストが不正だった. * joinのバグ修正(使っているオブジェクトをfreeしていた). * splitのバグ修正(アルゴリズムがおかしかった). * fork()を追加. Wed Jan 26 17:09:56 1994 Yukihiro Matsumoto (matz at nws119) * ファイルテストメソッドの追加. * rb_autoexec(): クラスを初めてアクセスした時の挙動を制御できるよ うにした. これでautoloadも実現できる. これにともないメソッド unknownはなくなった. Tue Jan 25 15:51:36 1994 Yukihiro Matsumoto (matz at nws119) * Dbmクラス, Mathモジュールを作成. * -Iオプションでサーチパスに追加できるように. * サーチパスを変数$load_pathに設定できるように. * load(): ダイナミックロードを使えるようにした. Tue Jan 18 14:14:01 1994 Yukihiro Matsumoto (matz at nws119) * Comparable:"<=>" * Float,Fixnum:"**" * Array:sort Fri Jan 14 16:53:37 1994 Yukihiro Matsumoto (matz at nws119) * version 0.07 * メソッドに関するドキュメントを充実させた. * String:index(): 引数positionを増やした. Thu Jan 13 15:13:52 1994 Yukihiro Matsumoto (matz at nws119) * 未初期化の変数アクセスをなくした. * 無駄なhash tableのアロケーションを削除. * Purify'd(on Sun) * ~RE と ~STRのコンパイル時展開の抑制. * Sunへ移植. signal()の戻り値. RDataのbug修正. * parse.y: nlsルールを削除. * yylex(): 改行と符合の解析部分を変更. * missing/strftime.c: 移植用. * Time:strftime: その他のメソッドもstrftimeを利用するように. * メソッド再定義時にメソッドキャッシュをクリアする. Fri Jan 7 15:23:20 1994 Yukihiro Matsumoto (matz at nws119) * Float:coerce(): FixnumとFloat以外の引数を与えられるた時には例外 を発生するように. * Stat: stat構造体の全てのメンバに対するアクセスメソッドを用意. * 未定義のクラス/モジュールへの参照がunknownメソッドを呼び出すよう にした. * baseline - version 0.06. --- spec | 3244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3244 insertions(+) create mode 100644 spec (limited to 'spec') diff --git a/spec b/spec new file mode 100644 index 0000000000..2171e958aa --- /dev/null +++ b/spec @@ -0,0 +1,3244 @@ +.\" spec - -*- Indented-Text -*- created at: Tue May 25 15:18:26 JST 1993 + +* Ϥ(ʤRuby?) + +RubyϡUNIXǼڤ˥֥Ȼظץߥ󥰡פ򤷤Ȥ˾ +¸뤿ޤ줿. ΤɬפȻפ줿: + + * ʸˡ䵡ǽñǤ. + * ֥Ȼظץߥ󥰤򥵥ݡȤ뵡ǽ + ĸȤ߷פƤ. + * 󥢥饦ɥबû(󥿥ץ꥿Ǥ). + * OS(UNIX)εǽñѤǤ. + * ץȸȤƻȤ. + * ϤfreeǤ. + +ʤɤǤ. ֥ȻظȤưŪǤSmalltalkC++ʤɤ +ξΰƤϤ뤬, ä˼ڤʥץߥ󥰤Ȥ˷ +Ƥ, ƤΤǤϤʤä. ץȸǤPerl +Tcl˥֥Ȼظǽɲäƥ¸ߤ뤬, ϡּ +ڤ˥ץߥ󥰡פȤƤϤƤ, դ˥֥Ȼظ +ǽä. ä, ξ򿷤߷ +ɬפȹͤ줿. Ƨޤ߷פ줿Rubyħ: + + * 󥿥ץ꥿Ǥ. + * ñ㳰ξʤʸˡ. + * ʬʥ֥Ȼظǽ. + * Ǥ񤭤䤹(黻ҷʤ). + * ١쥯. + * 㳰ǽ. + * ʬ˶Ϥʥ饹Ȥ߹ޤƤ. + * OS򥢥뵡ǽ󶡤. + * ĥ䤹. + +ʤɤ. RubyshperlΤäƤͤˤȤäƤξQˤʤ뤿ä +Τ, θ줫μʰܹԤǽǤȻפ. ץޤ +RubyΥ֥ȻظǽˤĤƳؤ٤, 궯ϤʤȤǤ褦 +ʤ. + +Cǥ饹򵭽Ҥ뤳ȤRuby򹹤˶Ϥˤ뤳ȤǤ. +OSǤRubyưŪ˥֥ȥե󥯤Ǥ뤷, Ǥʤ +ƤRubyƥѥ뤷Ȥ߹ߥ饹ɲäΤưפǤ. + +* Rubyδ + +RubyδŪʬ˾, ʸˡ㳰ʤΤǿȤˤĤΤ +ۤ񤷤ʤ. + +** + +ץȸνˤʤ餤, ʸʳ'#'ޤǤϥ +ȸʤ. + +** ڤ국 + +ʸ(֤ȥڡ)Ӳ(\n)ڤ국Ȥʤ. , + + a + + b + +Τ褦˹Ԥ(ʸ)ǽ, ιԤ³Ȥʾʳϲ +ʸζڤȤǧ. + +** ̻ + +ե٥åȤ`_'ǻϤޤ, ե٥å, , `_'Ǥդ¤Ӥϼ +̻ҤǤ. ̻ҤŤϤʤ. + +** ͽ + +ͽϰʲ̤Ǥ + + break, case, class, continue, def, do, else, + elsif, end, ensure, for, func, if, in, + include, module, nil, protect, redo, resque, retry, + return, self, super, then, undef, unless, until, + using, when, while, yield, __END__ + +ͽϥ饹̾, ᥽å̾, ѿ̾ʤɤѤ뤳ȤϤǤʤ. + +** ƥ + +ʲΥƥ뤬 + + ʸƥ + + "..." # Хååβᤢ + '...' # Хååβʤ(\\\'ϲ᤹) + + Хåå嵭ˡ + + \t (0x09) + \n ʸ(0x0a) + \r ʸ(0x0d) + \f ڡʸ(0x0c) + \b Хåڡ(0x08) + \a ٥(0x07) + \e (0x1b) + \nnn 8ʿɽ(n0-7) + \xnn 16ʿɽ(n0-9,a-f) + \^c ȥʸ(cASCIIʸ) + \C-c ȥʸ(Ʊ) + \M-c ᥿ʸ(c|0x80) + + ɽƥ + + /.../ + + ɽ + + ^ Ƭ + $ + . Ǥդ1ʸ + \w ѿ. [0-9A-Za-z_]Ʊ + \W ѿ + \s ʸ. [ \t\n\r\f]Ʊ + \S ʸ + \d . [0-9] Ʊ + \D + \b 춭ʸ(ʸ饹) + \B 춭ʸ + \b (0x08)(ʸ饹) + [ ] ʸ饹 + * ľɽ0ʾη֤ + + ľɽ1ʾη֤ + {m,n} m󤫤nη֤ + ? 0ޤ1 + | + ( ) ɽޤȤ + + ¾˥Хåå嵭ˡͭǤ. + + ͥƥ + + 123 + -123 (Ĥ) + 1_234 (10ʿ`_'ޤळȤǤ) + 123.45 ư + 1.2e-3 ư + 0xffff 16 + 0377 8 + ?a ʸ`a'Υ(97) + ?\C-a ȥaΥ(1) + ?\M-a ᥿aΥ(225) + ?\M-\C-a ᥿-ȥaΥ(129) + + ?ɽǤƤΥХåå嵭ˡͭǤ. + +** 롼ԥ + +ϳ̤ˤäƥ롼ԥ󥰤뤳ȤǤ. ˳ˤϼ¤Ӥ +񤱤. ¤Ӥ򵭽Ҥ, ȼζڤˤϲԤ ';' Ѥ. +¤ӤͤϺǸɾͤǤ. Ĥޤ + + (; ; ...) + +ͤϺǸɾͤˤʤ. + +** ƥ + +Ҥο, ʸ, ɽγƥƥϼǤ. + +** + +󼰤ϰʲηǤ. + + [ , ... ] + +줾μɾ̤ޤ֤. Ǥ0뤿 +ˤ϶ + + [] + +Ѥ. + +** Ϣ + +ϢȤǤդΥ֥Ȥ򥭡(ź)ȤƻƤǤ. Ruby +ǤϢSmalltalkѸڤDict()ȤƤФ. ܺ٤ϥ +饹Dictι򻲾Ȥ줿. ϢϢ󼰤ϰʲη +. + + { =>, ... } + +줾μɾ̤򥭡ͤȤϢ󥪥֥Ȥ֤. +Ǥ0Ϣ뤿ˤ϶Ϣ + + {} + +Ѥ. + +** ѿ + +ѿˤ4ढä, μѿ̾κǽΰʸǷꤵ. +Ƥʤѿ򻲾ȤͤnilǤ. + + 饹ѿ() + + `%'ǻϤޤѿϥ饹ѿǤ, Υ饹ƤΥ֥饹 + 󥹥󥹤黲ȤǤ. ѿؤϥȥåץ٥, ʤ + ᥽åɤǤ٥ǤΤ߲ǽǤ. ѿϥ饹֤ + ͤͭ, ȥ᥽åɤͤѹ뤳ȤǤ + Τ,ȤѤ. + + 󥹥ѿ + + `@'ǻϤޤѿϥ󥹥ѿǤ, Υ饹ޤϥ֥ + Υ᥽åɤ黲ȤǤ. μ̿ϥ֥Ȥμ̿. + + Хѿ + + `$'ǻϤޤѿΥפϥХǤ, μ̿ϥץ + μ̿. + + 饹̾/⥸塼̾/ѿ + + ե٥åȤޤ`_'ǻϤޤѿϼ̻ҤȤƤФ, + ѿ, 饹̾ޤϥ⥸塼̾Ǥ. + + ֤Ǥϼ̻Ҥϥ饹/⥸塼̾Ȥߤʤ뤬(륯 + ¸ߤʤͤnil), κդ˸줿̻Ҥ,Υ + ǤϥѿȤƸʤ, Ʊ̾Υ饹⥸塼 + . ΰ̣Ǽ̻ҤؤȤƤƯ. + + Array # 󥯥饹 Array + Array = 15 # . ʸArrayϥѿ + print(Array, "\n") # `15'Ϥ + + ϥѥ˲ᤵ뤿, ̻Ҥؤºݤ˼ + ԤƤ, ʤƤ, ʹߤΥǤϤμ̻Ҥϥ + ѿȤߤʤ. + + Array # 󥯥饹 Array + if %FALSE + Array = 15 # Υɤϼ¹Ԥʤ, + # ʹArrayϥѿȤߤʤ. + end + print(Array, "\n") # `nil'Ϥ + + Υ롼ϰ츫ʣ, 饹/⥸塼̾ȥѿ̾ + ʣʤ¤, ̤ΥѿͤnilǤȹͤƤ⺹ + ٤Ϥʤ. + + RubyȤ߹ߴؿʸΥե٥åȤǻϤޤ̾ĤƤ, + 桼⥯饹/⥸塼̾ˤʸǻϤޤ뼱̻Ҥ, + ̾ˤϾʸޤ`_'ǻϤޤ뼱̻ҤȤȤ򶯤侩. + + ѿμ̿ϤΥ᥽åɤλޤ(ȥåץ٥Υ + ѿϥץνλޤ)Ǥ. + +˵ѿȸƤФüѿȤselfnil. selfϸߤΥ +åɤμ¹ԼΤؤѿǤ, nilNil饹ͣΥ󥹥 +(ɽ)ؤѿǤ. εѿˤäƤ +ѹ뤳ȤϤǤʤ. ѿؤ㳰ȯ. + +** å + +֥Ȥ˥åŪʹʸåǤ, δ +ܷϰʲ̤Ǥ. + + 1.᥽å̾(...) + + 1ɾ륪֥Ȥ, ̻Ҥǻꤵ᥽ + ɤƤӽФ. ֺǸΰ'*'³(ñ)Ǥ, + μɾ(Ǥɬפ)Ÿ, Ȥ + ɲä. + + Ĥʤˤϳ̤άǤ. + +᥽å̾ȤƤǤդμ̻ҤѤ뤳ȤǤ. ѿ̾Ȥϼ̻Ҥ +֤̾㤦ΤǽʣƤ⹽ʤ. + +** ؿ + +å, 쥷Фselfξ, 쥷Фάƴؿǥ᥽ +ɤƤӽФȤǤ. ξ1ĤʤǤ̤ξάϤ +ʤ. + +ؿǤ`@'ǻϤޤ̾ĥ᥽åɤƤӽФȤǤ. `@' +Ϥޤ᥽åɤϴؿǤƤӽФȤǤʤ, 륯 +ޤ, Υ֥饹餷ƤФʤΤ, ץ饤١ȥ᥽åɤ +ƤФ. ץ饤١ȥ᥽åɤC++ˤprotected member function +. + +** ѡ饹Υ᥽åɸƤӽФ + +åüʥȤƥѡ饹Υ᥽åɤθƤӽФ +. ηϥ᥽åɤ˥ѡ饹Ѥ뤿 +˻Ȥ. + + super + + ߤΥ᥽åɤͿ줿Τޤޥѥ饹Ʊ̾Υ᥽ + ɤƤӽФ. + + super(...) + + ȤȤ˥ѡ饹Ʊ̾Υ᥽åɤƤӽФ. ֺǸ + ΰ`*'³̾Υ᥽åɸƤӽФƱ. + +** 黻 + +ץߥ󥰤ؤΤ˰Υ᥽åɸƤӽФ湽¤ϱ黻ҷ +Ȥ. Rubyˤϰʲˤ黻Ҥ. ΤΤۤɷ̤, +Ʊα黻Ҥη̤ƱǤ. + + -(unary) +(unary) ! ~ + ** + * / % + + - + << >> + > >= < <= + <=> == != =~ !~ + & + | ^ + && + || + .. ... + :: + =() (+=, -=, ..) + yield + +ۤȤɤα黻ˤϥ᥽åɸƤӽФȤƲᤵ(饹˺ +Ǥ), ǤʤüʤΤ. Ǥʤü黻 +Ҥ + + &&(), ||(), =(), ...(ϰϻ), + yield(֥åƤӽФ) + +5ĤǤ. + +Ǥü黻Ұʳα黻ҷϥ᥽åɸƤӽФȸʤ. +ñ黻(+, -, !, ~) + + 1."黻"() + +Ȥ, 2黻Ҥ + + 1."黻"(2) + +Ȳᤵ. ¿黻(λȤ[])ϱ黻ҷ̤ʷȤ + + recv[arg..] + +, + + recv."[]"(arg..) + +Ȳᤵ. ǤƱͤǤ. + +** P + +if, unless, while, untilξȽμ, ü黻`&&', `||', +`...'ξդμ, ̾黻`!'αդϾPȸƤФ. PǤʸ +ɽƥϼ$_=~ƥפξάǤȤߤʤ. +黻`...'ξդǤƥ뤬$.==ƥפξάȲᤵ. + +: 黻`!'ü黻ҤǤϤʤΤ, Ԥʤ˵Ĥ +뤳. + + ! ʸƥ + ! ɽƥ + +ηǸƤӽФ᥽åɤΰ, ƥɽ֥ȤǤϤʤ. +`!'᥽åɤϺʤɤȻפ. + +** + +ˤѿФ(), ץñˤ뤿Υ +å奬ȤƤ. ϰʲηǤ. + + ѿ = + +ϼɾ, ѿͤȤ. 饹⥸塼䵿ѿ +ˤǤʤ. 饹⥸塼ѹ뤿ˤclassʸ, +moduleʸѤ. ϱ黻ҷȤäƤ뤬, ᥽åɤǤϤʤ +Ǻ뤳ȤϤǤʤ. + +󥿥å奬ȤƤϰʲΤΤ. + + Ǥؤ + + 1[2,..] = n + + 1ɾ륪֥Ȥ, 2鼰nޤǤȤ + , "[]="Ȥ᥽åɤƤӽФ. + + ° + + 1.̻ = 2 + + 1ɾ륪֥ȤФ"̻="Ȥ᥽ + ɤ, 2ȤƸƤӽФ. + + + + 1 op= 2 # 1ǽǤʤФʤʤ. + + ηŪˡּ1 = 1 op 2פŸ, ¹Ԥ. + ϥץޤΥ׿򸺤餹ŪΤ¸ߤǤ + . opȤƻȤ黻Ҥ + + +, -, *, /, %, **, &, |, ^, <<, >> + + 11Ǥ. 黻Ҥ`='δ֤˥ڡƤϤʤ. + +*** ¿ + +ƱʣѿԤʤȤǤ. ηϰʲ̤Ǥ. + + ѿ, [ѿ,...] = [, ] + +դμĤʤ, , ͤǤˤǤ +ѿ. ʳξˤ, 줾μͤѿ +. դѿοȱդǤοʤˤ­ʤѿˤ +nil, ;äǤ̵뤵. + + foo, bar = [1, 2] # foo = 1; bar = 2 + foo, bar = 1, 2 # foo = 1; bar = 2 + foo, bar = 1 # foo = 1; bar = nil + + foo, bar, baz = 1, 2 # foo = 1; bar = 2; baz = nil + foo, bar = 1, 2, 3 # foo = 1; bar = 2 + +** ʬ + + if 1 [then] + ʸ1 + [ elsif 2 [then] + ʸ2 ]... + [ else + ʸn ] + end [ if ] + + Ƚʸ. else if ǤelifǤʤelsififϢ³ԤʤȤ + դ뤳. + + unless 1 [then] + ʸ1 + [ else + ʸ2 ] + end [ unless ] + + 1(nil)֤, 2ɾ㳰ȯʸ1ɾ + . + + 1 && 2 + + 1ɾ, ͤ(nilʳ)Ǥ, 2ɾ. + + 1 || 2 + + 1ɾ, ͤǤ, 2ɾ. + + 1 ... 2 + + 1ˤʤޤǤϵ֤, θϼ2֤ޤǤϿ֤. + 2ˤʤо֤ϵ + + case 0 + [ when 1 [, 2]... + ʸ1 ]... + [ else + ʸn ] + end [ case ] + + ʬ, CswitchPascalcase˻Ƥ. breakæФ뤳 + Ȥʸ˷³뤳ȤʤΤ. + + ΰפϡּn =~ 0]ǹԤʤ. Ĥޤ, + + case expr0 + when expr1, expr2 + stmt1 + when expr3, expr4 + stmt2 + else + stmt3 + end + + ϰʲifʸǤ. + + _tmp = expr0 + if expr1 =~ _tmp || expr2 =~ _tmp + stmt1 + elsif expr3 =~ _tmp || expr4 =~ _tmp + stmt2 + else + stmt3 + end + +** ֤ + + while + ʸ + end [ while ] + + 郎δ, ʸ򷫤֤¹Ԥ. + + until + ʸ + end [ until ] + 1 until 2 + + (nil)֤, ɾ㳰ȯ, ʸ򷫤֤ + Ԥ. + +** ƥ졼 + +ƥ졼Ȥ湽¤(ä˥롼)ݲΤѤ᥽åɤ +Ǥ. ƥ졼θƤӽФϰʲιʸǹԤʤ. + + do + ʸ1 + using ѿ + ʸ2 + end [ do ] + + ʸ2פ֥åȤꤷ, ʸ1Υ᥽åɤ򥤥ƥ졼Ȥɾ + . ʸ1Υȥåץ٥Υ᥽åɤƥ졼ȤƸƤӽФ, + 쥷Фɽ, μϥƥ졼ȤƤϸƤӽФʤ. ʸ + 1ʣμгơƥ졼Ȥƽ˸ƤФ. + +ƥ졼yield value¹Ԥ, ͤdoʸǻꤵ줿ѿ +֥å¹Ԥ. ֥åμ¹ԤλȤͤ +yieldͤȤ֤. ᥽åɤƥ졼ȤƸƤӽФ줿 +ɤϴؿiterator_p()Τ뤳ȤǤ. ˤEnumerable⥸塼 +grep᥽åɤΤ褦˥ƥ졼ȤƸƤФ줿̤Υ᥽åɤȤ +ƸƤФ줿Ȥưۤʤ᥽åɤ⤢. + + for ѿ in + ʸ + end [ for ] + + γǤФʸ¹Ԥ. ϰʲdoʸǤ. + + do ().each using ѿ + ʸ + end + + äƼͤΥ֥Ȥ᥽åeachʤ, for¹ + 㳰ȯ. + +** 㳰 + +ͽʤ֤ȯˤ㳰ȯ. RubyǤ㳰 +ª, ƻԤ, Ԥʤäꤹ뤳ȤǤ. + + protect + ʸ1 + [ resque + ʸ2 ] + [ ensure + ʸ3 ] + end [ protect ] + + ʸ1¹Ԥ, μ¹㳰ȯresqueǻꤵ줿ʸ2 + ¹Ԥ. ensure᤬¸ߤprotectʸλɬ( + ェλǤʤ, 㳰, return, break, continue, redoʤɤˤ + æФǤ)ʸ3¹Ԥ. + +protectʳ, unless黻, until黻Ҥϱդͤ㳰ȯ +, դͤȤƵͿ줿ȸʤΤ, ۤ㳰 +ԤʤäƤ뤳Ȥˤʤ. + +** æ + + return [] + + ᥽åɤμ¹Ԥλ. + + continue + redo + break + + 嵭3Ĥϥ롼ǻȤ. + + continueϤäȤ¦Υ롼פμη֤Ϥ. redoϥ롼 + Υ롼׾ΥåԤʤ鷺, ߤη֤ľ. break + ϥ롼פæФ. CȰ㤤, breakϤäȤ¦Υ롼פæФ + Ѥ, caseȴѤϻʤ. + + retry + + protectʸresqueǻȤ, protectʸϤᤫ¹Ԥ. 㳰 + ԤʤäƤƻԤΤ˻Ȥ. + + fail([å]) * Kernel饹Υ᥽åɤǤ. + + 㳰ȯ. åͿ줿ˤȯե + ̾, ֹ$@˥å$!˥åȤ. + +** ƥ졼ǤΥ֥åƤӽФ + + yield + + ƥ졼ǥ֥åθƤӽФԤʤ. yield¹Ԥ᥽ + ɤƥ졼ȤƸƤӽФƤʤˤ㳰ȯ. + +** 饹 + +饹빽ʸϰʲ̤Ǥ. + + class 饹̾ [ : ѡ饹̾ ] + + end [ class ] + +ͤnil. 饹̾ʸǻϤޤ뼱̻ҤǤ. 饹ΥͥȤϤ +ʤΤ¾ʸǤϥ饹Ǥʤ. + +** ⥸塼 + +⥸塼빽ʸϰʲ̤Ǥ. + + module 饹̾ + + end [ module ] + +⥸塼̾ʸǻϤޤ뼱̻ҤǤ. 饹Ʊ, ⥸塼 +ͥȤǤʤ. + +** 󥯥롼 + +饹˥⥸塼򥤥󥯥롼ɤ빽ʸϰʲ̤Ǥ. + + include ⥸塼̾ [, ⥸塼̾...] + +ߤΥ饹ޤϥ⥸塼(ȥåץ٥ǤObject)˻ꤷ +⥸塼򥤥󥯥롼ɤ. ˤä¿ŷѾ򥨥ߥ졼ȤǤ. + +** ᥽å + +̾(ðۥ᥽åɤǤʤ)᥽åηϰʲ̤Ǥ. ̾᥽ +ϥͥȤǤʤΤ, ᥽åʸǤϥ᥽åʸƤӸ +ӽФʤ. + + def [func] ᥽å̾ [ ( [, ...][, * ] ) ] + + end [ def ] + +᥽å̾ϼ̻ҤޤʸǤ. 黻Ҥκ򤹤ˤʸ +ǻꤹ. ¤ӤκǸ`*', ¿Ϳ줿 +°, ǸΰȤͿ(­ʤˤϥ顼). + +`func'ꤵ줿ˤϤΥ᥽åɤϴؿǤƤӽФ +ȤǤؿŪ᥽åɤˤʤ. + +** ðۥ᥽å + +᥽åˤϤ⤦ðۥ᥽åɤ. ϰʲ̤Ǥ +. + + def .᥽å̾ [ ( [, ...][, * ] ) ] + + end [ def ] + +ηϼͤǤ륪֥Ȥðۥ᥽åɤ. ͤ +(ӥȥ󥯥饹Ǥʤ)̾索֥Ȥ, 饹ޤϥ⥸塼Ǥ +ɬפ. ̾᥽åȤϰۤʤ, ϥ᥽åǤ +ȤƸƤӽФȤǤ. + +ðۥ᥽åɤΥ֥Ȥˤ°᥽åɤǤ. ä̾ +ϷѾʤ, 㳰Ȥƥ饹ðۥ᥽åɤϤΥ֥饹ˤ +. ؤХ饹ðۥ᥽åɤ¾Υ֥Ȼظ +ˤ륯饹᥽åɤƯ򤹤. + +** ᥽åɤ̾ + +ʲηǥ᥽åɤ̾Ĥ뤳ȤǤ. + + def ᥽å̾1 ᥽å̾2 + +̾դ줿᥽åɤ, λǤΥ᥽åѤ, Υ +åɤƤ, Ť᥽åɤƤӽФ줿ΤƱƯ +. + +** ᥽åä + +᥽åɤäˤundefѤ. + + undef ᥽å̾ + +̻Ҥޤʸǻꤷ᥽åɤä. + +defˤ̾undefˤäȤȥ饹Υ󥿥ե +򥹡ѥ饹Ωѹ뤳ȤǤ. , ʬȤ˥å +äƤդʤȴ¸Υ᥽åɤưʤʤǽ +. + +* RubyȤ߹ߵǽ + +Rubyץߥ󥰤δܤϥ饹, ⥸塼ȤΥ᥽åɤνǤ. +RubyˤϽϤΤΤ˰ʲεǽȤ߹ޤƤ. 饤֥ +ɤ뤳ȤˤäƵǽ뤬, ˴ؤƤϤ줾Υ饤֥ +ΥɥȤ򻲾ȤƤ餤. + +ü`+'ΤĤ᥽åɤϴؿ᥽åɤǤ. + +** ؿ + +Rubyˤϸ̩ʰ̣ǤϴؿϤʤKernel饹Υ᥽åɤΰ( +饹ؿǸƤӽФΤ), ؿŪѤ. ؿŪѤ +᥽åɤʲˤ. Υ᥽åɤݤˤϸߴ +ͤƹԤʤ٤Ǥ. + + _exit(status) + + + ץμ¹Ԥλ. statusλơȤ. + exit()Ȥϰä, 㳰ʤɤϰڹԤʤʤ. fork()θ, + ץλʤɤѤ. + + caller + + caller(level) + + + åե졼फ, ᥽åɤθƤӽФΥե + ̾, ֹ, ǤȤ֤. levelͿ줿 + ϸߤΥåե졼levelʾξ֤. + + eof() + + + ޥɥ饤󤫤ϤEOFãƤ, ֤. + + eval(expr) + + + exprȤͿ줿ʸrubyץȤƲ,¹Ԥ. + + exec(command) + + + ߼¹ԤƤץλ, commandʸǻꤵ + ̥ץư. + + exit([status]) + + + ץμ¹Ԥλ. statusȤͿ줿, + ͤRubyޥɤνλơȤ. ǥեȤ0. + + fail([message]) + + + 㳰ȯ. åͿ줿ˤϤ򥷥ƥ + ѿ`$!'˥åȤ, ȯ֤򥷥ƥѿ`$@'˥åȤ. + + fork() + + + forkƥॳ¹Ԥ, ҥץ. ܺ٤ + fork(2)򻲾ȤΤ. ƥץ¦ǤϻҥץΥץid + ֤, ҥץ¦Ǥnil֤. 餫θǻҥץ + ˼Ԥˤ㳰ȯ. + + format(format, ...) + + + եޥåȤȤͿ줿ʸCsprintfƱ褦 + ᤷ, Ÿʸ֤. ᥽åsprintf()̾. + + RubyˤformatҤγĥˤĤƤsprintf()ι򻲾Ȥ + . + + getc() + + + ɸϤʸФ. ͤɤ߹ʸʸ + (ASCII)ɽFixnumǤ. + + getenv(name) + + + name˳ĶѿФ. + + gets(pattern, replace) + + + ȤͿ줿ե(ʤɸ)ɤ߹ + , ɤ߹ߤˤϤʸ֤. եν + ãˤnil֤. Ԥζڤϥƥѿ`$/'ˤä + ѹǤ. ɤ߹ʸϥƥѿ`$_'ˤ⥻åȤ. + + gsub() + + + ƥѿ`$_'λؤʸФִԤʤ. ʸ + pattern˥ޥåʬreplace֤. String饹 + gsub᥽åɤβ򻲾ȤΤ. + + iterator_p() + + + ᥽åɤƥ졼ȤƸƤӽФ줿˿, Ǥʤ˵ + ֤Ҹ. + + kill(signal, pid...) + + + pidǻꤵ줿ץ˥ʥ. ʥϥʥ + 椫̾ǻꤹ. ͤĥʥ(뤤ϥʥ̾ + `-')ͿȥץǤϤʤץ롼פ˥ʥ + . + + load(file) + + + fileɤ. fileɤѥϥƥѿ$LOAD_PATH + Ƿꤵ. + + open(file[, mode]) + + + file򥪡ץ󤷤, File֥Ȥ֤. ե̾ϥ + 󤹤ե򼨤. ե̾`|'ǻϤޤˤ³ʸ + 򥳥ޥɤȤƵư, ѥץ饤. + + ޥ̾"-"Ǥ, open()Rubyλҥץ, + λҥץȤΥѥפ֤. + + modeϥեΥ⡼ɤꤹ. ϰʲΤΤ + 줫ʸǤ. + + r ɤ߹. openեϤ餫¸ߤƤ + ɬפ. + + r+ ɤ߽ξ. openեϤ餫¸ߤƤ + ɬפ. + + w 񤭹. ե뤬¸ߤƤ, Ĺ0ˤ + . ¸ߤƤʤп˥ե. + + w+ ɤ߽ξ. ɤ߹ߤԤʤ뤳Ȱʳ"w"ƱƯ + 򤹤. + + a ɲý񤭹. եϤ餫¸ߤƤɬ + . 񤭹ߤϥեκǸɲä. + + a+ ɤ߽ξ. ե뤬¸ߤƤʤп˺ + . ֤ϥեκǸ˽. + + ⡼ɤά줿ΥǥեȤ"r"Ǥ. + + print(arg1, ..., argn) + + ˽Ϥ. Ϳʤˤϥ쥷ФϤ. + ʸʳΥ֥ȤȤͿ줿ˤ, + ֥Ȥto_s᥽åɤˤäʸѴƤϤ. + ƥѿ`$;'(ϥեɥѥ졼)nilǤʤͤ + ȤƤˤ, ưδ֤ˤʸϤ. ƥ + ѿ`$\'(ϥեɥѥ졼)nil ǤʤͤåȤ + ˤ, ǸˤϤ. + + printf([port, ]format, arg1, ..., argn) + + + Cprintf()Ʊformat˽ʸѴ, Ϥ + . 1IOΥ֥饹Υ󥹥󥹤ǤäϤΥ + ֥ȤФƽϤԤʤ. ǥեȤ$stdout˽Ϥ. + + RubyˤformatҤγĥˤĤƤsprintf()ι򻲾Ȥ + . + + rand(max) + + + 0maxۤʤϰϤȯ. ͤFixnum. + + require(file) + + fileɤ. loadȤưΰ㤤requireϥɤե + Υեѥѿ$LOAD_FILES˳ФƤ, ˥ɤե + ϺƥɤʤǤ. ºݤ˥ɤˤ%TRUE, + ˥ɤƤˤ%FALSE֤. + + select(reads[, writes[, execpts[, timeout]]]) + + + select(2)¹Ԥ. reads/writes/execptsˤIO(ޤϤΥ + 饹)Υ󥹥󥹤Ϳ. timeoutFixnum / Float + / TimeΤ줫ǻꤹ. ͤtimeoutΩˤ + nil, ǤʤȤ3Ǥ֤, γǤ// + 㳰ԤΥ֥ȤǤȤƻ. + + setenv(name, value) + + + nameǻꤵĶѿvalue˥åȤ. + + sleep([sec]) + + + secäץμ¹Ԥߤ. secά줿, ץ + SIGALRMʤ¤, ʵפ˥꡼פ. ºݤ˥꡼ + פÿ֤. + + sprintf(format, ...) + + + formatʸCsprintfƱ褦˲ᤷ, Ÿ + ʸ֤. ᥽åformat()̾. + + + formatҤCsprintf()դ(, Ruby + unsignedʤΤ, %uϽ)˲ä, %b, %B, %O, %XȤ + ȤǤ. %bϿͤ2ɽ, %B, %O, %X, 줾, 2, + 8 , 16ʿɽԤʤ, ονκݤ2ɽ + Ϥʤ, ɽƬ`-'ĤΤɽ. + + srand([]) + + + νͤꤷ, Ť֤ͤ. ͤά줿 + time(3)֤ͤǥեȤȤ. + + sub() + + + ƥѿ`$_'λؤʸФִԤʤ. ʸǺ + pattern˥ޥåʬreplace֤. String饹 + sub᥽åɤβ򻲾ȤΤ. + + system(command) + + + ޥɤ¹Ԥ, νλơ֤. + + system2(command) + + + ޥɤ¹Ԥ, νϤʸȤ֤. + + trap(command, signal...) + + + signalγߤäcommand¹Ԥ. signalϥ + ʥ̾ʥֹ. commandȤSIG_IGNޤIGNORE + ˤϤΥʥ̵뤹(ǽʤ). SIG_DFLޤ + DEFAULTꤷϥǥեȤưԤʤ. + + wait() + + + ҥץλΤԤ, λҥץpid֤. + ҥץĤʤnil֤. + + waitpid(pid, flags) + + + λҥץνλԤ, Υץλ˿ + . ҥץ¸ߤʤ, Υ֥å󥰥⡼ɤǻҥץ + ޤλƤʤˤnil֤. waitpid(2)wait4(2) + ƤʤޥǤflagsϤĤnilޤ0ǤʤФ + ʤ. + +** ƥѿ + + $! 顼å. fail()ꤹ. + + $@ 顼ȯΥե̾ȹֹ椬 + + "ե:ֹ[:᥽å̾()]" + + ηdzǼ. + + $& Ǹѥޥå + + $1..$9 Ǹѥޥånܤγ̤˥ޥå + ͤǼ. ̤ʤniläƤ. + + $~ ǸΥޥå˴ؤ. 򥻥åȤ$&$1..$9 + ͤѲ. + + $= ѿͤnilǤʤ, ѥޥåʸ + Ӥǥե٥åȤʸʸ̤ʤ. ǥե + Ȥnil(̤). + + $/ ϥ쥳ɥѥ졼. եʸФeach + Ԥʤʬʸꤹ. $/˶ʸ("")ꤹ + ñ̤ϤԤʤ, nilꤹΤ + ɤ߹. $/ˤɽϻȤʤ. ǥեȤ + "\n". + + $\ ϥ쥳ɥѥ졼. ѿʸꤹ + write()print()٤˺ǸˤʸղäƽϤ + . ǥեȤnil(ʤˤɲäʤ). + + $, Array:join()ΥǥեȤζڤʸ. print()γư + δ֤˽Ϥʸ. + + $; String:split()ΥǥեȤζڤʸ. + + $. Ǹɤϥեιֹ. + + $_ Ǹgets()ʤɤɤ߹ʸ. + + $0 rubyץȤ̾ + + $* rubyץȤͿ줿. rubyȤФ + Ƥ. + + $$ ߼¹rubyץpid. + + $? Ǹ˼¹Ԥҥץstatus. + + $ARGV $*Ʊ. + + $ENV Ķѿ˥Ϣ(EnvDict). ѿ + `for'Ԥʤѿ̾ͤΥڥͿ. + + $FILENAME ؿgets()Ǹɤ߹Υե̾. + + $DEBUG `-d'ե饰ξ() + + $LOAD_PATH եɤ˸ǥ쥯ȥؤΥѥ + ޤ. ưˤϥǥե(ѥ˻ꤹ + )˲ä, ĶѿRUBYLIBͤrubyư-Iץ + ǻꤵ줿ͤɲä. + + $stdin ɸ + $stdout ɸ + $stderr ɸ२顼 + + $VERBOSE `-v'ե饰ξ() + + $VERSION rubyΥС򼨤ʸ + +** ƥ + + %TRUE 1(Fixnum) + %FALSE nil + + 줾쿿ͤɽ. ȽǤnil, ʳƤͤ + ȤȽǤ뤿, ֤ͤ᥽åɤ%TRUEʳͤ + Τ¸ߤΤ, ӤѤΤŬڤǤʤȤդ + Ǥ. 㤨мμϿˤʤʤ. + + (2 < 3) == %TRUE + + ᥽å"<"Ͽλ֤ͤΤ, ξͤ3Ǥ, + %TRUE1Ȥϰۤʤ. %FALSE˴ؤƤ, Τ褦 + ʤ. + +** 饹/⥸塼 + +*** Array(饹) + +źȤΥ饹Ǥ. ϰŪˤ``[...]'' +Ԥʤ. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + self[nth] + self[start..end] + self[start, length] + + Ǥ˥. ǽηǤnthܤǤ + ֤, 2ܤηǤstartܤǤendܤǤޤ + ʬ֤. 3ܤηǤstartܤlengthĤǤޤ + ʬ֤. + + self[nth] = val + self[start..end] = val + self[start, length] = val + + Ǥѹ. ǽηǤnthܤǤval + ѹ. 2ܤηstartܤǤendܤǤޤǤ + valѹ. 3ܤηǤstartܤlengthĤǤval + ѹ. + + 2, 3ܤηǤvalǤʤФʤʤ. + + : + + ary = [1, 2, 3, 4, 5] + ary[0..2] = [0, 0] # Ƥ [0, 0, 4, 5] + ary[1, 0] = [7] # Ƥ [0, 7, 0, 6, 5] + + self + other + + Ϣ. selfotherξƤҤ + ֤. + + self * times + + η֤. + + self << obj + + objɲä. self֤ΤC++ŪϢǤ. + + assoc(key) + + Ϣۥꥹ(2ǤǤȤ)򸡺, 1Ǥkey + ("=="Ӥ)֤. + + clear + + 礭0ˤ. + + delete(item) + + itemȰפǤ. + + delete_if + + Ǥ륤ƥ졼. ֥åɾͤλ, б + Ǥ󤫤. + + each + + γǤͿ륤ƥ졼. + + fill(val) + fill(val, start[, length]) + fill(val, start..end) + + (λꤵ줿ʬ)Ǥͤvalꤹ. 2֤η + lengthά줿νޤǤĹȤ. ꤵ줿 + ʬ󤬸ϰϤۤϼưŪ˳ĥ. + + join([sep]) + + ǤϢ뤷ʸ֤. ǤʸѴ, + sep򶴤Ϣ뤵. sepά줿ˤϥƥѿ`$,' + ͤѤ. + + length + + Ĺ(ǿ)֤. + + push(obj) + + objɲä. + + pack(template) + + Ƥtemplateʸˤä, 1Ĥʸ˥ѥå + . ѥåʸ֤. ƥץ졼ȤϷʸȤĹ + (ά1)¤٤ΤǤ. ĹȤ`*'ꤵ줿 + ֻĤΥǡơפĹɽ. + + ʸϰʲΤΤ. + + a ASCIIʸ(nullʸͤ) + A ASCIIʸ(ڡͤ) + b ӥåȥȥ(̥ӥåȤ̥ӥå) + B ӥåȥȥ(̥ӥåȤ鲼̥ӥå) + h 16ʸ(̥˥֥뤬) + H 16ʸ(̥˥֥뤬) + c char + C unsigned char + s sort + S unsigned sort + i int + I unsigned int + l long + L unsigned int + n ͥåȥХȥshort + N ͥåȥХȥlong + f ñư(¸) + d ư(¸) + x ʥХ + X 1Хȸ + @ а֤ؤΰư + + pop + + Ǥ, ֤. + + rassoc(value) + + Ϣۥꥹ(2ǤǤȤ)򸡺, 2Ǥ + value("=="Ӥ)֤. + + shift + + ƬǤ, ֤. + + sort + + Ƥ򥽡Ȥ. ƥ졼ȤƸƤӽФ줿ϥ֥ + ɾͤǤ羮ꤹ. 礭, + 0, . ̾Υ᥽åɤȤƸƤӽФ줿ϳ + `<=>'Ӥ. + + to_a + + ʬȤ֤. оΤѰդƤ᥽åɤǤޤ + 򤯤ʤ. + + unshift(obj) + + objƬɲä. + +*** Bignum(饹) + +̵¿ĹΥ饹. 黻η̤FixnumϰǤˤϼ +ưŪ˥饹FixnumѴ. ŪRubyץǤFixnum +BignumѴϰۤΤ˹ԤΤ, ռɬפ̵. FloatȤ +˴ؤƤ, Bignum Floatgenericity⤤Τˤؤ餺, +Bignum, 礭ͤɽǤΤ, Ѵ˷ǽ +. + + +SuperClass: Integer + +Methods: + + self + other + self - other + self * other + self / other + self % other + self ** other + + ѱ黻. 줾, , , , ;, Ѿ֤. + + ~ self + self | other + self & other + self ^ other + + ӥåȱ黻. 줾ӥåȿž, , , ¾Ū¤ + ֤. + + self << bits + self >> bits + + եȱ黻. 줾bitsӥåȤ˥ӥåȥեȤԤʤ. + + divmod(other) + + Ⱦ;2Ǥ֤. + +*** Class(饹) + +饹Υ饹. 긷̩ȥ饹ðۥ᥽åɤѾ뤿 +, 줾᥿饹ȸƤФ̾Τʤ饹򥯥饹Ȥƻ, +ClassϤΥ᥿饹Υ饹Ǥ(ʬä?). , β⤬ +ǤʤƤ, RubyȤȤ˲λپʤ. + +SuperClass: Module + +Methods: + + attr(name[, public]) + + Υ饹Υ󥹥󥹤Фnameǻꤵ°. + ܤModuleattr᥽åɤι򻲾ȤΤ. + + new(...) + + 饹Υ󥹥󥹤. ¿ξ礳Υ᥽åɤϥ֥ + 饹ðۥ᥽åɤˤäƥС饤ɤ, 饹ˤäư + ۤʤ. + +*** Comparable(⥸塼) + + ӱ黻饹ΤMixin. Υ⥸塼򥤥󥯥롼ɤ뤳 + Ȥˤä, `<=>'¾α黻ҤϤѤ + . + +Methods: + + self > other + + selfother礭֤. + + self >= other + + selfother礭֤. + + self < other + + selfother꾮֤. + + self <= other + + selfother꾮֤. + + between(min, max) + + selfminmaxϰˤ֤. + +*** DBM(饹) + +NDBMե򥢥륯饹. , ǡȤʸǤʤФ +ʤȤ¤, ǡե¸ȤƤ +Dict饹Ʊͤ˰ȤǤ. NDBMƤʤƥǤ +Υ饹ؤΥ㳰ȯ. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + self [key] + + key򥭡Ȥ֤ͤ. + + self [key]= value + + key򥭡Ȥ, valueǼ. valueȤnilꤹ, + keyФܤκȤʤ. + + clear + + DBMեȤˤ. + + close + + DBMե򥯥. ʸ㳰ȯ. + + delete(key) + + key򥭡ȤȤ. + + delete_if + + Ǥ륤ƥ졼. [key, value]ȤͿ, ֥ + ɾͤλ, ܤ. + + each + each_value + + ƤvalueФƷ֤ƥ졼. + + each_key + + ƤkeyФƷ֤ƥ졼. + + each_pair + + [key, value]ʤͿ륤ƥ졼. + + includes(key) + has_key(key) + + keyǡ١¸ߤ, ֤ + + has_value(value) + + valueͤȤȤǡ١¸ߤ, + ֤ + + keys + + ǡ١¸ߤ륭Ƥޤ֤. + + length + + ǡ١Ǥο֤. (:ߤμ¸Ǥǿ + 뤿˥ǡ١Τ, 빽Ȥ⤤. + ĤƻȤ.) + + to_a + + ǡ١key-valueڥǤȤ֤. + + values + + ǡ١¸ߤƤޤ֤. + +Single Methods: + + open(dbname[, mode]) + + dbnameǻꤷǡ١⡼ɤmodeꤷƥץ + . modeξάͤ0666Ǥ. modeȤnilꤹȥǡ + ١¸ߤʤˤϿ˥ץ󤻤, nil֤. + +*** Dict(饹) + +񤢤뤤Ϣ. ǤդΥ֥ȤźȤǤΥ饹Ǥ +. HashȤ̾Ǥ⥢Ǥ. Ϣ󥪥֥Ȥϰ +ŪˤϢ``{a=>b,..}'' ǹԤʤ. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + self [key] + + key򥭡Ȥ֤ͤ. + + self [key]= value + + key򥭡Ȥ, valueǼ. valueȤnilꤹȤ + keyФܤκȤʤ. Ĥޤ, DictͤȤnil + ȤϤǤʤ. + + clear + + Ϣˤ. + + delete(key) + + key򥭡ȤȤ. + + delete_if + + Ǥ륤ƥ졼. [key, value]ȤͿ, ֥ + ɾͤλ, ܤ. + + each + each_value + + ƤvalueФƷ֤ƥ졼. + + each_key + + ƤkeyФƷ֤ƥ졼. + + each_pair + + [key, value]ʤͿ륤ƥ졼. + + includes(key) + has_key(key) + + key¸ߤ, ֤ + + has_value(value) + + valueͤȤȤ¸ߤ, ֤ + + keys + + ¸ߤ륭Ƥޤ֤. + + length + + Ǥο֤. + + to_a + + key-valueڥǤȤ֤. + + values + + ¸ߤƤޤ֤. + +Single Methods: + + new + + ()񥪥֥Ȥ֤. + +*** Directory(饹) + +ǥ쥯ȥǤ֤ǥ쥯ȥꥹȥ꡼ΤΥ饹. +DirȤ̾Ǥ⥢Ǥ. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + close + + ǥ쥯ȥꥹȥ꡼򥯥. ʸ㳰ȯ + . + + each + + ǥ쥯ȥγǤͿ륤ƥ졼. + + getwd + pwd + + ȥǥ쥯ȥ֤. + + rewind + + ǥ쥯ȥꥹȥ꡼Ƭ˥ꥻåȤ. + + seek(pos) + + ǥ쥯ȥꥹȥ꡼ΰ֤posꤹ. + + tell + + ǥ쥯ȥꥹȥ꡼θߤΰ֤֤. + +Single Methods: + + chdir(path) + + ȥǥ쥯ȥpathѹ. + + chroot(path) + + ץΥ롼ȥǥ쥯ȥѹ, Ʊ̾Υƥॳ + ƱƯ򤹤. ϼ¸uidѥ桼Ǥ + ¤Ƥ. 롼ȥǥ쥯ȥ򸵤᤹(롼ȥǥ쥯 + ѹ)ˡ󶡤Ƥʤ. + + mkdir(path[, mode]) + + modeǻꤵ줿⡼ɤĥǥ쥯ȥpath. ⡼ + umaskˤäƽ. modeΥǥեͤ0777. + + open(path) + + pathФǥ쥯ȥꥹȥ꡼򥪡ץ󤹤. + + rmdir(path) + + pathǻꤵ줿ǥ쥯ȥ. ǥ쥯ȥ϶Ǥ + ɬפ. + +*** Enumerable(⥸塼) + +ǤФ뷫֤Ԥʤ饹ΤMixin. Υ⥸塼򥤥 +롼ɤ뤿ˤ, ᥽å`each'ɬפ. + +Methods: + + collect + + ǤФƥ֥åɾ̤ƴޤ֤ + + find + + ǤФƥ֥åɾͤˤʤäǽǤ֤. + + find_all + + ǤФƥ֥åɾͤǤäǤƴޤ + ֤. + + grep(pattern) + + pattern =~ ǡפΩƤǤޤ֤. + 졼ȤѤ줿Ͼ嵭ξΩǤФƥ֥ + ¹Ԥ. + + includes(val) + + val`=='δطˤǤĻ, ֤. + + index(val) + + val`=='δطˤ륪֥Ȥܤ˸줿֤. + ֺǽǤ0ˤʤ. Ǥ¸ߤʤˤnil֤. + ʤ饹ФƤϤޤ̣ʤ. + + min + + ǾǤ֤. Ǥ`<=>'᥽åɤĤȤۤΤ + ˲ꤷƤ. + + max + + Ǥ֤. Ǥ`<=>'᥽åɤĤȤۤΤ + ˲ꤷƤ. + + reverse + + ƤǤս¤٤֤. + + sort + + ƤǤ򥽡Ȥ֤. + +*** EnvDict(饹) + +Ķѿ뤿Υ饹. ƥѿ$ENVͣΥ󥹥󥹤 +Ƥ. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + [name] + + Ķѿ֤ͤ. + + [name]= val + + Ķѿͤvalꤹ. valȤnilꤷˤ, + Ķѿ. + + delete(name) + + Ķѿ. + + each + + Ķѿ̾ͤΥڥͿ륤ƥ졼. + +*** Etc(⥸塼) + +/etcǥ쥯ȥʲξ뤿Υ⥸塼. 饹˥󥯥롼 +ƻȤȤǤ. + +Methods: +Single Methods: + + getlogin + + ʬlogin֤̾. 줬Ԥgetpwuid()Ѥ + ɤ. + + getpwnam(name) + + /etc/passwdե(뤤DBMեNISǡ١) + , name̾passwdȥ֤. ͤpasswd¤ + ΤǰʲΥФ. + + struct passwd + name # 桼̾(ʸ) + passwd # ѥ(ʸ) + uid # 桼ID() + gid # 롼ID() + gecos # gecosե(ʸ) + dir # ۡǥ쥯ȥ(ʸ) + shell # 󥷥(ʸ) + # ʹߤΥФϥƥˤäƤϤʤΤ⤢ + change # ѥѹ() + quota # () + age # () + class # 桼饹(ʸ) + comment # (ʸ) + expire # ͭ() + end + + ܺ٤getpwnam(3)򻲾ȤΤ. + + getpwuid([uid]) + + uid桼IDȤpasswdȥ֤. ͤgetpwnam() + ƱͤǤ. άˤgetuid()ͤѤ. ܺ٤ + getpwuid(3)򻲾ȤΤ. + + getgrgid(gid) + + /etc/groupե(뤤ϡgetpwnam)򸡺, gid򥰥롼 + IDȤ륰롼ץȥ֤. ͤgroup¤Τǰʲ + Ф. + + struct group + name # 롼̾(ʸ) + passwd # 롼פΥѥ(ʸ) + gid # 롼ID() + mem # 롼ץ̾ + end + + ܺ٤getgrgid(3)򻲾ȤΤ. + + getgrnam(name) + + nameȤ̾Υ롼ץȥ֤. ͤgetgrgid()Ʊ + ͤǤ. ܺ٤getgrnam(3)򻲾. + + group + + ƤΥ롼ץȥ˥뤿Υƥ졼. + + passwd + + Ƥpasswdȥ˥뤿Υƥ졼. + +*** File(饹) + +ե륢ΤΥ饹. ؿ᥽åopen(). ޤ, +Υ饹ðۥ᥽åɤȤtestΥեƥȱ黻Υ᥽å +Ƥ. + +SuperClass: IO + +Methods: + + atime + + եκǽ֤. + + ctime + + եκǽơѹ֤. + + chmod(mode) + + եΥѡߥåѹ(cf chmod(2)). + + chmod(owner, group) + + եνͭԤȥ롼פѹ(cf chown(2)). nil-1 + ꤹ뤳ȤˤäƽͭԤ䥰롼פ򸽺ߤΤޤѤʤǤ + ȤǤ. + + eof + + եνüã˿֤. + + lstat + + ե˴ؤStat¤Τ֤. lstatϥե뤬ܥ + 󥯤ǤХ󥯤ΤΤ˴ؤStat¤Τ֤. ¤ + ƤˤĤƤstat 򻲾ȤΤ. + + mtime + + եκǽ֤. + + rewind + + եΥեݥ󥿤ΰ֤Ƭ˰ư. + + path + + եΥѥ֤̾. + + seek(offset, ptrname) + + եΥեݥ󥿤ΰ֤offset˰ư. ptrname + 0, 1, 2Τ줫Ǥä, 줾եƬ, ߰, + եνüΤΤ줫Ф򼨤. + + stat() + + ե˴ؤStat¤Τ֤(Struct 򻲾). + + struct stat + dev # ե¸ߤǥХ + ino # եi-nodeֹ + mode # ⡼ + nlink # ϡɥ󥯤ο + uid # ͭԤΥ桼ID + gid # ͭԤΥ롼ID + rdev # ǥХID(ڥեΤ) + size # ե륵(byte) + blksize # ե륷ƥˤŬڤʥ֥å + blocks # ֥å + atime # ǽ + mtime # ǽ + ctime # ǽѹ + end + + ܺ٤fstat(2)򻲾ȤΤ. ƥƤ + stat¤Τ˳Фʤ0ꤵƤ. + + tell + + եθߤΥեݥ󥿤ΰ֤֤. + + truncate(length) + + եڤΤƤƺlengthХȤˤ. եwrite⡼ + ɤǥץ󤵤ƤʤФʤʤ. + +Single Methods: + + atime(filename) + + filenameκǽ֤. + + b(filename) + + filenameΥե뤬֥åڥեǤ, + . + + c(filename) + + filenameΥե뤬饯ڥեǤ, + ֤. + + ctime(filename) + + filenameκǽơѹ֤. + + chmod(mode, path, file...) + + եΥѡߥåѹ(cf chmod(2)). + + chown(owner, group, file...) + + եνͭԤȥ롼פѹ(cf chown(2)). nil-1 + ꤹ뤳ȤˤäƽͭԤ䥰롼פ򸽺ߤΤޤѤʤǤ + ȤǤ. + + executable(filename) + x(filename) + + filenameΥե뤬¹Բǽλ, ֤. + + exists(filename) + e(filename) + a(filename) + + filenameΥե뤬¸ߤ, ֤. + + G(filename) + + filenameΥեgid¸롼פgidƱ, ֤. + + isdirectory(filename) + d(filename) + + filenameǥ쥯ȥλ, ֤. + + isfile(filename) + f(filename) + + filenameΥե뤬̾եλ, ֤. + + islink(filename) + l(filename) + + filenameΥե뤬ܥå󥯤Ǥ, ֤. + + ispipe(filename) + p(filename) + + filenameΥե뤬̾Ĥѥ(FIFO)Ǥ, ֤. + + issocket(filename) + S(filename) + + filenameΥե뤬åȤǤ, ֤. + + link(old, new) + + oldؤΥϡɥnew. link(2)Ʊ¤. + + mtime(filename) + + filenameκǽ֤. + + owned(filename) + O(filename) + + filenameΥե¸桼ͭƤ, ֤. + + readable(filename) + r(filename) + + filenameΥեɤߤȤǽλ, ֤. + + readlink(path) + + ܥåpathƤʸȤ֤. + + rename(from, to) + + ե̾fromtoѹ. rename(2). toȤ̾ + Υե뤬¸ߤˤϤޤΥե뤬. + + R(filename) + + filenameΥեuid/gidɤߤȤǽλ, ֤. + + setuid(filename) + u(filename) + + filenameΥեsetuidӥåȤåȤƤ, ֤. + + setuid(filename) + g(filename) + + filenameΥեsetuidӥåȤåȤƤ, ֤. + + size(filename) + s(filename) + + filenameΥե뤬¸ߤ, ե礭֤. ¸ߤ + ʤnil֤. + + sticky(filename) + g(filename) + + filenameΥեstickyӥåȤåȤƤ, ֤. + + symlink(old, new) + + oldؤΥܥånew. + + truncate(path, length) + + pathǻꤵ줿եڤΤƤƺlengthХȤˤ. + + unlink(file...) + + ե. ǥ쥯ȥκˤDir.rmdirȤ. + + utime(atime, mtime, file...) + + եΥatime, mtimeꤹ. + atime, mtimeϿޤTime饹Υ󥹥󥹤ǤʤФʤ + . + + writable(filename) + w(filename) + + filenameΥե뤬uid/gidǽ񤭹߲ǽλ, ֤. + + W(filename) + + filenameΥե뤬񤭹߲ǽλ, ֤. + + z(filename) + + filenameΥե뤬¸ߤ, 礭0Ǥ, ֤. + +*** Fixnum(饹) + +31bitΥ饹. builtin classǤ. Υ饹pointer¨ͤ +뤿call by valueǸƤӽФħŪǤ(¾Υ饹call +by reference). 黻η̤31bitۤˤϼưŪBignum(̵¿ +Ĺ)˳ĥ. + +ƥ졼upto(), downto(), step()Ϸ֤ΤѤ, ̤ +Range饹Ѥ®Ǥ. + +SuperClass: Integer + +Methods: + + self + other + self - other + self * other + self / other + self % other + self ** other + + ѱ黻. 줾, , , , ;, Ѿ֤. + + ~ self + self | other + self & other + self ^ other + + ӥåȱ黻. 줾ӥåȿž, , , ¾Ū¤ + ֤. + + self << bits + self >> bits + + եȱ黻. 줾bitsӥåȤ˥ӥåȥեȤԤʤ. + + self .. max + + ϰϻ. self maxޤǤϰϥ֥Ȥ֤. + + downto(min) + + ƥ졼. selfminޤDz˷֤. + + id2name + + ͤIDȤߤʤ, ʸ֤. ʸ + ¸ߤʤnil֤. + + step(max, step) + + ƥ졼. selfmaxޤstepѲʤ, ֤. + + to_f + + selfFloatѴΤ֤. + + to_i + + self򤽤Τޤ֤. + + upto(max) + + ƥ졼. selfmaxޤǷ֤. + +*** Float(饹) + + ưΥ饹. + +SuperClass: Numeric + +Methods: + + self + other + self - other + self * other + self / other + self % other + self ** other + + ѱ黻. 줾, , , , ;, Ѿ֤. + + self == other + self > other + + ӱ黻. + + coerce(num) + + numfloatѴ. FloatǤ¾ο + FixnumǤ. + + to_f + + self򤽤Τޤ֤. + + to_i + + floatѴ̤֤. + +Single Methods: + + new(float) + + floatƱͤĿFloat֥Ȥ֤. + +*** GC(⥸塼) + +RubyȤ߹ߤgarbage collectorԤʤΥ⥸塼. Υ +塼Υ᥽åɤѤ뤳Ȥˤä, ŪGCߤ᤿, GCε +륿ߥ󥰤椷Ǥ. + +gcϻϤޤˤΥ⥸塼start_hook᥽åɤ, äˤ +end_hook᥽åɤƤӽФ, ᥽åɤ뤳Ȥˤä +hook򤫤뤳ȤǤ. + +Methods: + + garbage_collect + + + GC򳫻Ϥ. GC.startפƱ. + +Single Methods: + + disable + + GCػߤ. + + enable + + GCĤ. + + start + + GC򳫻Ϥ. + + threshold + + GCγϥߥ󥰤ꤹͤθߤ֤ͤ. + + threshold=(val) + + GCͤꤹ. Ť֤ͤ. + + start_hook + end_hook + + GCγϻ, λˤ줾ƤФ. ǥեȤǤϲ⤷ʤ + ᥽åɤƤ. + +*** Integer(饹) + +饹. ºݤϤ礭ˤäFixnumBignumĤΥ֥饹 +Ǽ¸Ƥ. IntegerϤΥѡ饹Ȥʤݥ饹Ǥ +. RubyǤϤۤȤɤξ, FixnumBignumζ̤ɬפʤ, ߤѴ +ϼưŪ˹Ԥʤ. ӥåȤߤʤˤ, ̵¤Ĺ +ĥӥåȹͤƹʤ. + +SuperClass: Numeric + +Methods: + + self[idx] + + idxӥåܤåȤƤ1, åȤƤʤ + 0֤. + + chr + + ο򥳡ɤȤʸޤ1ʸʸ֤. ̤ + Ĺ1ʾʸˤĤ, δطΩ. + + str[0].chr == str[0,1] + + ʸϰ(0..255)ˤʤ㳰ȯ. + + is_integer + + Ĥ⿿֤. + +*** IO(饹) + +ϤΤδܥ饹. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + self << object + + objectϤ. objectʸǤʤˤϥ᥽åto_sѤ + ʸѴ. selfͤȤΤ, C++Τ褦`<<' + ϢȤ. + + : + + $stdout << 1 << " is a " << Fixnum + + close + + ϥݡȤ򥯥. ʸΤΥ֥ȤФ + ϥ顼ˤʤ. + + each + + Ԥɤ߹Ǥ뤿Υƥ졼. Ԥζڤϥƥ + `$/'ˤäѹǤ. ɤ߹ʸϥƥѿ`$_' + ⥻åȤ. + + each_byte() + + ʸɤ߹Ǥ뤿Υƥ졼. ʸʸɤɽ + FixnumǤ. + + fileno + + IO֥ȤȤäƤեǥץ(Fixnum)֤. + + flush + + Хåեեå夹. + + getc + + ɤ߹, ɤ߹ߤˤϤʸ֤. ե + νãˤnil֤. ؿŪ᥽åɤgetc() + $stdin.getcƱ̣Ǥ. + + gets + + ɤ߹, ɤ߹ߤˤϤʸ֤. ե + νãˤnil֤. + + isatty + + ϥݡȤttyǤ, ֤. + + puts(obj) + + objϤ. self << objפƱ̣Ǥ. + + read([length]) + + lengthХɤ߹, ʸ֤. lengthά줿 + ˤ, ƤΥǡɤ߹. + + sync + + ߤνƱ⡼ɤ򿿵֤ͤ. Ʊ⡼ɤλϽϴ + θƽ˥Хåեեå夵. + + sync=(newstate) + + Ʊ⡼ɤꤹ. + + sysread(length) + + stdioͳread(2)ѤϤԤʤ. Ϥ줿ǡ + ޤʸ֤. եνãˤnil֤. + read(2)ˤɬlengthХȤʸɤ߹ޤ櫓 + ǤϤʤ. gets()getc()ʤstdioͳ᥽åɤȺѤ + ȤϥХåե󥰤ʤɤ, פư򤹤뤳Ȥ. + + syswrite(str) + + stdioͳ, wirte(2)ѤƽϤԤʤ. Υ᥽å + ϥХåե󥰤ʤstdioƤ뤳ȤϰڹԤʤʤ. + print()printf()syswrite()ѤΤϿ侩Ǥʤ. + + write(str) + + strϤ. ϤХȿ֤. + +Single Methods: + + default + + printprintfΥǥեȤν֤. ͤ$stdout. + + default= + + ǥեȤνꤹ. + +*** Kernel(饹) + +ƤΥ饹δ쥯饹. RubyȤ߹ߤƤδؿŪ᥽åɤϤΥ +饹Ƥ. + +SuperClass: ʤ + +Methods: + + ! self + + . Non-nilΥ֥Ȥξ˵(nil)֤. Υ᥽ + ɤNil饹ǤϺ쿿֤. + + equal(other) + self == other + + ֥ȤΰȽ. 쥷ФȰΰפ, + ֤. Kernel饹ǤΥ֥ȤƱλ + . "=="᥽åɤϳƥ֥Ȥ˱ƺɬפ + . "=="᥽åɤˤ, hash᥽åɤ⤽˹ + ƺɬפ. + + equal()᥽åɤ"=="᥽åɤ̾, "=="Ǥ + ֥ȤƱȽԤʤѤ. ä + equal()᥽åɤϥ֥饹Ǻ٤ǤϤʤ. + + self != other + + "==". "=="᥽åɤƤӽФƤΤ, Ϻ + ɬפϤʤ. + + self =~ other + + ޥå. ǥեȤ"=="ƱǤ. "=~"caseӤˤѤ + . + + !~ + + "=~". "=~"᥽åɤƤӽФƤΤ, + ɬפϤʤ. + + self :: other + + selfotherǤȤĹ2֤. Ȥ + ̣ [self, other]ƱƯ򤹤뤬, 鷺˸ + Ψɤ. α黻ҤϱǤΤ, a::b::c (a::(b::c)) + Ȳᤵ. + + is_nil + + ֥ȤnilǤ뤫ɤ. Kernel饹ǤϿ + . Nil饹ǺƤ. + + id + + ƥ֥ȤФưդFixnum֤. , FixnumϼʬȤ + Τ, idפƤƱ֥ȤǤ뤳Ȥݾڤʤ. + Ĥޤ, + + obj1.id == obj2.id + + ΩƤ, ɤ餫FixnumǤ, obj1obj2ƱǤ + Ȥϸ¤ʤ. , ξFixnumǤʤȤݾڤǤ, 2 + ĤΥ֥ȤƱǤ뤳Ȥϳμ¤Ǥ. + + hash + + ֥ȤΥϥå(Fixnum)֤. Dict饹ǥȤʤ + ֥ȤǼΤѤƤ.A == BפΩ + ɬA.hash == B.hashפΩɬפΤ, "==" + ˤϤ⤽˹碌ƺ뤳. + +*** Math(⥸塼) + +ư黻򥵥ݡȤ륯饹. Math⥸塼ƱΥ᥽å +ðۥ᥽åɤȤξƤΤ, ðۥ᥽åɤƤӽФƻ +Ȥ, 饹˥󥯥롼ɤƻȤȤȤξǤ. + + : + + pi = Math.atan2(1, 1) * 4; + include Math + pi2 = atan2(1, 1) + +Methods: +Single Methods: + + atan2(x, y) + + С-ФϰϤX/YΥ󥸥Ȥ֤. + + cos(x) + sin(x) + tan(x) + + 饸ɽ줿xλѴؿ֤ͤ. + + exp(x) + + xλؿؿ֤ͤ. + + log(x) + + xμп֤. + + log10(x) + + xξп֤. + + sqrt(x) + + xʿ֤. xͤǤˤ㳰ȯ. + + cbrt(x) + + xΩ֤. + +*** Module(饹) + +⥸塼Υ饹. + +SuperClass: Object + +Methods: + + attr(name[, public]) + + + Υ⥸塼򥤥󥯥롼ɤ饹Υ󥹥󥹤Ф + nameǻꤵ°ղä, °Ф륢᥽åɤ + . attr("attr")ϰʲ˼ɤȤۤƱǤ. + + def attr; @attr; end + + άǽ2publicͿ, ĤͤnilǤʤ + , °ˤ°᥽åɤѰդ, ǽ + ʤ. attr("attr", %TRUE)ϰʲΥɤȤۤƱǤ. + + def attr; @attr; end + def attr=(val); @attr = val; end + + °᥽åɤ뤳Ȥˤä, ư + ѹǤ. 㤨 + + attr("test", %TRUE) + def test=(val) + print("test was ", @test, "\n") + print("and now is ", @test = val, "\n") + end + + Τ褦°ͤɽ褦ʤȤǽǤ. attr + ϥ᥽åɤǤƤ, ǥեȤΥ + ᥽åɤʤ. + + to_s + + ⥸塼ʸɽ֤. ⥸塼ξʸɽϥ + 塼̾Ǥ. + +*** Nil(饹) + +ɽ֥nilΥ饹. ѿ()nilNil饹ͣΥ +󥹥󥹤Ǥ. nil饹ӥ᥽åɤդ뤬, Ӥ +ϢԤʤǤ. ӤϢȤ + + 10 < a < 13 + +Τ褦ʤΤǤ. ӱ黻ҥ᥽åɤϼԤnil֤, +ϱդΥ֥Ȥ֤Τ, nilӱ黻Ҥ˵֤Ȥˤ +ϢΩ. + +SuperClass: Kernel + +Methods: + + self + other + + other, ư, ʸ, Τ줫Ǥä, + other֤. ̤ΰФ뼫ʤ褦Ѱ + 줿᥽åɤǤ. + + foo # ͤnil + foo += 1 # foo1ˤʤ. + + self > other + self >= other + self < other + self <= other + + ϢΤΥ᥽å. nil֤. + + ! self + + ˿֤. + + is_nil + + ˿֤. + +*** Numeric(饹) + +̤ɽݥ饹. + +SuperClass: Object + +Included Modules: Comparable + +Methods: + + + self + + ֥selfΤΤ֤ + + - self + + 0 - selfפ֤ͤ. ֥饹ǤΨŪ˺뤳 + ȤԤ. + + abs + + ֤ͤ. + + divmod(other) + + Ⱦ;2Ǥ֤. + +*** Object(饹) + +Ƥ̾說饹Υѥ饹. Υ饹Υ֥饹Ǥʤ饹 +KernelNilǤ. + +SuperClass: Kernel + +Methods: + + is_member_of(class) + + ֥self饹classΥ󥹥󥹤Ǥ,֤. + + is_kind_of(class) + + ֥self饹classΥ֥饹Υ󥹥󥹤 + , ֤. + + clone + + ֥Ȥʣ. FixnumʳΥ饹ξ, 餯 + obj.eqaul(obj.clone)פϵǤ뤬, ¿ξobj == + obj.cloneפϿǤ. + + to_s + + ֥Ȥʸɽ֤. Υ᥽åɤŪprint() + format()᥽åɤѤƤ. + + to_a + + ֥ȤѴ. ͥ륯饹Ƥ + եȤ, Υ֥ȼȤޤ1Ǥ֤. + +*** Process(⥸塼) + +ץ˴ؤԤʤΥ⥸塼. Math⥸塼Ʊͤ +ƤΥ᥽åɤðۥ᥽åɤȤƤ̾Υ᥽åɤȤƤȤ. +Processϥץ֥ȤΥ饹ǤϤʤ, ץΥ᥽ +ɤޤȤ᤿ΤǤ뤳Ȥդ뤳. + +Methods: +Single Methods: + + euid + + ץθߤμ¸UID֤. + + euid=(uid) + + ץθߤμ¸UIDuid˥åȤ. + + getpgrp([pid]) + + pidǻꤵ줿ץ߽°Ƥץ롼פid + ֤. pidάpid0Ϳϸ߼¹ԤƤ + оݤˤ. + + getpriority(which, who) + + whichwhoǻꤵץ, ץ롼, 桼θ + ̤֤ͥ. ܺ٤getpriority(2)򻲾. Process⥸塼 + ǤwhichȤƻǤ%PRIO_PROCESS, %PRIO_PGRP, + %PRIO_USERƤ. + + pid + + ץΥץID֤. ϥƥѿ`$$'ͤƱ + . + + ppid + + ƥץΥץΥץID֤. UNIXǤľܤοƥץ + λ, ƥץpid1(initpid)ˤʤ. + + setpgrp(pid, pgrp) + + pidǻꤵ줿ץΥץ롼פpgrpˤ. pid0 + Ϳȸ߼¹Υץоݤˤ. + + setpriority(which, who, prio) + + whichwhoǻꤵץ, ץ롼, 桼θ + ̤ͥprioꤹ. ܺ٤setpriority(2)򻲾ȤΤ. + + uid + + ץθߤμUID֤. + + uid= + + ץθߤμUIDuid˥åȤ. + +*** Range(饹) + +ϰϥ֥ȤΥ饹. ϰϥ֥Ȥ`..'黻Ҥˤä, +ŪˤϰʲΤ褦ʻȤ򤹤 + + for i in 1..5 + ... + end + +, ξϰʲ®. + + do 1.upto(5) + ... + end + +ϰϥ֥Ȥ`..'黻ҤξդComparableޤ९饹Υ +󥹥󥹤ǤвǤ⹽ʤ. ϰϤϻȽޤळȤդ +. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + self =~ other + + selfotherƱ饹Фϰϥ֥Ȥ, ϰ + other(start <= other <= end),֤. caseʸ + ϰϻꤹǤ. 㤨 + + case i + when 1, 3..5 + ... + end case + + Τ褦ʥɤ񤯤ȤǤ. + + each + + ϰ¸ߤ륪֥ȤͿ륤ƥ졼. forʸΤ + Ѥ. + + end + + ϰϤν֤ + + start + + ϰϤλ֤. + +*** Socket(饹) + +SuperClass: BasicSocket + +åȤΤΤФ륷ƥॳ٥Υ󶡤륯饹. +PerlΥåȤФ륢Ʊ٥εǽ󶡤Ƥ. Υ +Ǥϥåȥɥ쥹pack줿ʸ, ꤹ. UDPåȤϤ +Υ饹ȤäѤ. + +Methods: + + accept + + ³դ, ³Ф륽åȤ֤. + accept(2)򻲾. + + bind(addr) + + bind(2)ƱƯ򤹤. addrpack줿åȥɥ쥹¤ + ΤǤ. + + connect(addr) + + connect(2)ƱƯ򤹤. addrpack줿åȥɥ쥹 + ¤ΤǤ. + + listen(backlog) + + listen(2)ƱƯ򤹤. + + recv(len, flags) + send(mesg, flags[, to]) + sysread(len) + +Single Methods: + + open(domain, type, protocol) + new(domain, type, protocol) + + åȤ. domain, type, protocolϥ󥯥롼 + եƤͤǻꤹ. domaintype˴ؤ + , ʸǻǤ뤬, ٤Ƥ򥫥СƤݾڤϤʤ. + + socketpair(domain, type, protocol) + + åȤΥڥ, 2ǤȤ֤. λ + openƱǤ. + +*** Regexp(饹) + +ɽΥ饹. ɽΥƥ/.../Ȥɽ, ưŪ +뤿ˤ + + Regexp.compile(ʸ) + +Ȥ. , String饹`=~'ϤȤ¿Υ᥽åɤɽ +ؤʸͿ줿ˤŪɽΤ, +Ȥ󤷤ȻפʳŪȻפȤϾʤ +. + +SuperClass: Object + +Methods: + + + self =~ string + + ɽʸ˥ޥå, ޥå֤֤. ޥå + ʤnil֤. + + ~ self + + $_ =~ selfפƱ. + +Single Methods: + + complie(string) + + ʸɽѴ֥Ȥ֤. + +*** BasicSocket(饹) + +åȤɽݥ饹. Ūʥåϥ֥饹. +㤨Х󥿡ͥåȥɥᥤξTCPsocketѤ. + +SuperClass: IO + +Methods: + + getopt(level, optname) + + åȤΥץ. getsockopt(2)򻲾ȤΤ. + ץƤޤʸ֤. + + getpeername + + ³ΥåȤξ. ѥå줿sockaddr¤ + ٥˥פʸ֤. getpeername(2)򻲾ȤΤ. + + getsockname + + åȤξ. ѥå줿sockaddr¤Τ٥˥ + ʸ֤. getsockname(2)򻲾ȤΤ. + + setopt(level, optname, optval) + + åȤΥץꤹ. setsockopt(2)򻲾ȤΤ. + + shutdown(how) + + åȤΰʹߤ³λ. how0Ǥ, ʹߤμ, + how1Ǥ, ʹߤݤ. how2λˤ, + ʹߤ, Ȥ˵ݤ. + +*** String(饹) + +ʸ󥯥饹. Rubyʸϥ̥륿ߥ͡ȤǤϤʤΤ, Хʥǡ +ⰷ. äƤɤ餫ȤñʤʸȤХǤ. +λۤ˴Ť, ɽ˴ؤ᥽åɰʳ2byteϤʸռ +Ƥʤ. ϺԤμȴǤϤʤտŪˤƤΤǤ( +Ƥ). + +SuperClass: Object + +Included Modules: Comparable, Enumerable + +Methods: + + self + other + + ʸϢ. Ϣ뤵줿ʸ֤. + + self * times + + ʸη֤. 㤨 + + "x" * 4 == "xxxx" + + Ǥ. + + self == other + self > other + + ʸ. ƥѿ$=nilǤʤˤʸʸ + ̤ӤԤʤ. + + self =~ other + + ʸΥޥå. otherɽʸ. otherʸξ + ưŪɽѴ. ޥåϥޥå, + ʤänil֤. + + ~ self + + $_ =~ selfפƱ. + + self[nth] + self[beg..end] + self[beg,len] + + ƤμФ. 1ܤηǤnthХܤΥǡFixnumȤ + ֤. 2ܤηǤbegХܤendХܤޤǤʬʸ + ֤(ξüޤ). 3ܤηǤbegХܤlenХ + ʬʬʸ֤. + + self[nth] = val + self[beg..end] = val + self[beg,len] = val + + Ƥι. 1ܤηǤnthХܤΥǡval () + . 2ܤηbegХܤendХܤޤǤʬʸ + valȤͿ줿ʸ֤. 3ܤηbeg + ܤlenХʬʬʸvalȤͿ줿ʸ + ֤. + + chop + + ʸκǸΥХȤڤȤ. + + crypt(salt) + + crypt(3)ѤưŹ沽ʸ֤. salt2ХȰʾĹ + ǤդʸǤ. + + delete(str) + + ʸΤ, str˴ޤޤʸ. ʸλtr + ƱͤǤ, a-babޤǤϰϤ, Ƭ^ʸ( + ޤƤʤΤ)̣. + + each + + ʸ󤫤1Ԥɤ߹Ǥ륤ƥ졼. + + each_byte + + ʸΤ줾ΥХȤˤĤƷ֤ƥ졼. + + gsub(pattern, replace) + + ʸpattern˥ޥåʬreplace֤. + ʸreplace&\0ϥޥåʸ, \1..\9nܤ + ̤Ƥ֤. + + hex + + ʸ16ʿɽʸȲᤷ, Ѵ. + + index(substr[, pos]) + + substrǽ˽и֤֤. posͿȤΰ֤鸡 + 򳫻Ϥ. Ĥʤˤnil֤. + + intern + + ʸ˰դб֤. ʸϥʥʸޤǤϤ + ʤ. + + lcfirst + + ʸκǽʸ(줬ե٥åȤǤ), ʸ + Ѵ. + + length + + ʸĹ(Хȿ)֤. + + next + + ּΡʸ֤. ʸȤϿϿȤ,ʸ + ʸȤä, 夬νԤʤ줿ԤǤ. + + "aa".next == "ab" + "99".next == "100" + "a9".next == "b0" + + Υ᥽åɤRange:eachѤƤΤ, ʲΤ褦ʽ + ǽǤ. + + for i in "a" .. "ba" + print(i, "\n"); + end + + a, b, c, .. aa, .. az, baޤǤƹԤ˽Ϥ. + + + դʤФʤΤ, νλȽ羮طǤϤʤ + `=='ȽꤵƤ뤿, `..'黻Ҥκդͤ³ʸ˱ + դʸ󤬴ޤޤƤʤ, ʲΤ褦ʾ̵¥롼פ + ٤äƤޤ. + + for i in "0" .. "1a" + print(i, "\n"); + end + + ԤϤ񤯤ȤˤäǤƨƤ褦ȤƤȹͤ + ⤤뤫⤷ʤ. ο¬. + + oct + + ʸ8ʿɽʸȲᤷ, Ѵ. 8ʿ + /[0-7]+/Ǥ, ƤϤޤʤʸФƤ + 0֤. perlȤϰäʸ0xϤޤäƤ뤫Ȥä + 16ʿȸʤƤ줿Ϥʤ. 8ʿǤϤʤΤ0 + ֤. + + reverse + + ʸγƥХȤս¤٤ʸ֤. ʸ2ХȤ + ʸޤǤƤ⤪ʤ˥Хñ̤ȿž. + split2Хʸ򤹤Τ, 2Хʸޤʸʸ + ñ̤ȿžˤ + + "ʸ".split(//).reverse.join("") + + ȤФ褤. + + rindex(substr[, pos]) + + ʸsubstrǸ˽и֤֤. posͿȤΰ + Ǹλ. Ĥʤˤnil֤. indexȤ + 1)ʸ鸡. 2)substrȤɽդ + ʤ. 2Ǥ. + + split([sep[, limit]]) + + ʸsepǻꤵ줿ѥˤä, եɤʬ䤹. + sepά줿ΥǥեȤϥƥѿ`$;'ͤѤ + . limitꤵ줿ˤϺlimitĤΥեɤʬ䤹. + split()ʬ䤵줿ʸޤ֤. sepǻꤵ줿ѥ + 󤬶ʸȥޥåʸ1ʸĤʬ䤵. + + squeeze([str]) + + ʸΤ, str˴ޤޤʸϢ³Ƥ, ʸ˰ + ̤. strά줿, ٤ƤʸоݤȤ. ʸ + λtrƱͤǤ, `a-b'abޤǤϰϤ, Ƭ`^' + ʸ(ޤޤƤʤΤ)̣. + + strip + + ʸζ. + + sub(pattern, replace) + + ʸpattern˥ޥåʬreplace֤. ִʸ + replace&\0ϥޥåʸ, \1..\9nܤγ + Ƥ֤. sub()gsub()Ȱۤʤ, ǽΥޥå + ִ. + + to_f + + ʸFloatѴ. + + to_i + + ʸ10ʿɽʸȲᤷ, Ѵ. + + toupper + uc + + ʸΥե٥åȤʸ֤. ʸ + 뤳Ȥ. tr("a-z", "A-Z")꾯®. + + tolower + lc + + ʸΥե٥åȤƾʸ֤. ʸ + 뤳Ȥ. tr("A-Z", "a-z")꾯®. + + tr(search, replace) + + ʸsearchʸ˴ޤޤʸ¸ߤ, replaceʸ + бʸ֤. replaceʸ󤬾ά줿 + ϶ʸͿ줿ȸʤ. replaceʸsearchʸ + ûreplaceʸκǸʸ֤Ƥȸ + . searchʸûˤбʸΤʤreplace + ñ̵뤵(BSDtrư). + + searchʸ, replaceʸ`a-b'Ȥ줿, + abޤǤϰϤʸASCIIξǻꤷȤˤʤ. + , searchʸκǽʸ`^'Ǥ, ³ʸ*ޤ + ʤ*ʸִоݤˤʤ. + + tr(1)εǽΤ, ʸ뵡ǽ, Ϣ³ʸ򰵽̤ + ǽ̤Υ᥽åɤʬ䤵Ƥ. εǽˤĤƤ + delete, squeeze򻲾ȤΤ. + + ؤΤ, str.tr(src,repl).squeeze(repl)᥽å + tr_s(src,repl) 󶡤Ƥ. + + ucfirst + + ʸκǽʸ(줬ե٥åȤǤ), ʸ + Ѵ. + + unpack(template) + + ʸtemplateʸˤäƥѥå, Ǥ + ޤ֤. templateʸArray饹pack᥽åɤȤ + ƱͤǤ. + + a ASCIIʸ(³nullʸ䥹ڡĤ) + A ASCIIʸ(³nullʸ䥹ڡ) + b ӥåȥȥ(̥ӥåȤ̥ӥå) + B ӥåȥȥ(̥ӥåȤ鲼̥ӥå) + h 16ʸ(̥˥֥뤬) + H 16ʸ(̥˥֥뤬) + c char + C unsigned char + s sort + S unsigned sort + i int + I unsigned int + l long + L unsigned int + n ͥåȥХȥshort + N ͥåȥХȥlong + f ñư(¸) + d ư(¸) + x 1ХɤФ + X 1Хȸ + @ а֤ؤΰư + +Single Methods: + + new(string) + + stringƱƤĿʸ֤. + +*** Struct(饹) + +¤Υ饹. ʣΥǡޤȤѤ(: Time::times). +ǡޤȤˤ󥯥饹Ѥ뤳Ȥ⤢뤬(: select), +¤ΤȤ٤ϰʲΤ褦ʾǤ. + + (1) Ǥο¿ + + ʹ֤٤ưפ˰복ǰο7ĤޤǤǤȤ⤬. + β˽, ǡ4İʾξѤ, + *2(ĤޤꥪեåȤȤΰ̣)7ۤ. ä, Τ褦 + ˤϹ¤ΤȤä򤷤䤹Ȼפ. + + (2) Ʊ̤ʤ + + ¤Τ㴳Ȥ⤤Τ, ®٤ˤʤ + ˤ, (Ʊ̤ʤ)Ϲ¤ΤλѤŬڤǤʤ + ǽ. + +ƹ¤Τˤϥ̾Ʊ̾ΰΤʤ᥽åɤƤ. + +ܥɥ, ¤Τɽ뤿ˤϰʲηȤ. + + struct ¤̾ + ... + end + +, ץǤηǹ¤Τ櫓ǤϤʤ. + +SuperClass: Object + +Included Modules: Enumerable + +Methods: + + self[idx] + + idxλidxܤǤ֤. idxʸλidxƱ̾ + ΥФǤ֤. + + values + + ¤ΤΥФͤǤ˻֤. 㤨аʲΥɤ + ʬpasswdȥϤ뤳ȤǤ. + + print(Etc.getpwuid().values.join(":"), "\n") + + νϤ`grep "$USER" /etc/passwd'νϤ;ʬʥեɤ + Ĥ(ƥˤäưۤʤ)ʳƱǤ. + +Single Methods: + + new(name, member::value...) + + nameȤ̾ŤΤ. memberϹ¤ΤΥФ + ɽʸǤ, valueϤͤǤ. 줿¤Τϥ + Фǻꤵ줿̾ðۥ᥽åɤƤ, Υ᥽å + ˤäƥФƤ뤳ȤǤ. + +*** TCPserver(饹) + +TCP/IPȥ꡼෿³Υ¦ΥåȤΥ饹. Υ饹ˤä +ñ˥åȤѤФΥץߥ󥰤Ǥ. 㤨echo +ФϰʲΤ褦ˤʤ. + + gs = TCPserver.open(4444) + socks = [gs] + + while %TRUE + nsock = select(socks); + if nsock == nil; continue end + for s in nsock[0] + if s == gs + socks.push(s.accept) + else + if s.eof + s.close + socks.delete(s) + else + str = s.gets + s.write(str) + end + end + end + end + +SuperClass: TCPsocket + +Methods: + + accept + + 饤Ȥ³׵դ, ³TCPsocketΥ + 󥹤֤. + +Single Methods: + + new([host, ]service) + open([host, ]service) + + service/etc/services(ޤNIS)ϿƤ륵ӥ̾ + ݡֹǻꤹ. hostꤷϻꤷۥȤ + ³դ. άƤΥۥȤ³׵ + . + +*** TCPsocket + +󥿡ͥåȥɥᥤΥȥ꡼෿åȤΥ饹. ̾IO饹 +֥饹ƱͤϤǤ. Υ饹ˤäƥåȤѤ +饤Ȥñ˵ҤǤ. 桼Ϥ򤽤ΤޤޥФž +ϰʲΤ褦ˤʤ. + + s = TCPsocket("localhost", 4444) + while gets() + s.write($_) + print(s.read) + end + +SuperClass: BasicSocket + +Methods: + + addr + + åȤ³ɽ֤. γǤ1 + ʸ "AF_INET", 2Ǥportֹ, 3ǤۥȤɽʸ + Ǥ. + + peeraddr + + ³襽åȤξɽ֤. γǤ + addr᥽åɤ֤ƱǤ. + +Single Methods: + + open(host, service) + new(host, service) + + hostǻꤷۥȤserviceǻꤷݡȤ³ + Ȥ֤. hostϥۥ̾, ޤϥ󥿡ͥåȥɥ쥹򼨤ʸ + , service/etc/services(ޤNIS)ϿƤ륵 + ̾ݡֹǤ. + +*** Time(饹) + +֤ɽ饹. 羮ӤʤɤǤ. Time.nowǸߤλ֤뤳 +Ǥ. ޤեΥॹפ᥽åɤͤ⤳Υ +Υ󥹥󥹤Ǥ. + +SuperClass: Object + +Included Modules: Comparable + +Methods: + + self == other + self > other + + otherTimeΥ󥹥󥹤. Ϳ줿 + ˤ1970ǯ 1 1 00:00:00 GMTÿǤ + ƻȤӤԤʤ. + + asctime + ctime + to_s + + date(1)ʸѴ. + + gmtime + + ॾνԤʤʤGMTǤλ. Υ᥽å + ȤäTime饹Υ󥹥󥹤, ʸλѴGMT + Ԥʤ. gmtimeϼʬȤ֤. + + ɥλɽˤ + + print(Time.now.gmtime, "\n") + + ȤФ褤. + + localtime + + ॾνԤʤä(ǥե). localtime + ⼫ʬȤ֤. + + to_i + tv_sec + + 1970ǯ 1 1 00:00:00 GMTޤǤÿ֤. + secondʬǤ⤢. + + sec + min + hour + mday + year + wday + yday + zone + isdst + + ŪݻƤtm¤ΤƤ֤. zoneʳ֤. + zoneϥॾɽʸ֤. (cf localtime(3)) + + strftime(format) + + formatʸ˽äʸѴ̤֤. format + ʸȤƻǤΤ ʲ̤Ǥ. + + %A ̾(Sunday, Monday,...) + %a ξά̾(Sun, Mon,...) + %B ̾(January, February,...) + %b ξά̾(Jan, Feb,...) + %c ɽ(cf ctime(3)) + %d ʿǤ(01-31) + %H 24λ(00-23) + %I 12λ(01-12) + %j ǯ̻(001-366) + %M ʬ(00-59) + %m ɽ(01-12) + %p ޤϸ(AM,PM) + %S (00-61) + %U ɽ. ǽ1 + Ϥޤ(00-53) + %W ɽ. ǽη1 + Ϥޤ(00-53) + %w ɽ. 0(0-6) + %X (: 15:01:06) + %x (: Fri Jan 14 1994) + %Y ɽ + %y β2(00-99) + %Z ॾ + %% % + + usec + tv_usec + + micro secondʬ֤. + +Single Methods: + + now + + ߤλɽTime饹Υ󥹥󥹤. + + at(time) + + timeƱɽTime饹Υ󥹥󥹤. time + Time饹Υ󥹥󥹤뤤Ͽ(/ư)Ǥ, + ξ1970ǯ 1 1 00:00:00 GMTÿǤȤƻ + ׻. + + times + + ߤΥץȤλҥץ񤷤桼/ƥCPU + ѻ¤ΤȤ֤(Struct򻲾). + + struct tms + utime # ץΥ桼 + stime # ץΥƥ + cutime # ҥץΥ桼 + cstime # ҥץΥƥ + end + + ֤ñ̤äǤ, ưͿ. ܺ٤ + times(3C)򻲾ȤΤ. + +*** UNIXserver + +UNIXȥ꡼෿³Υ¦ΥåȤΥ饹. + +SuperClass: UNIXsocket + +Methods: + + accept + + 饤Ȥ³׵դ, ³UNIXsocketΥ + 󥹤֤. + +*** UNIXsocket + +UNIXɥᥤΥȥ꡼෿åȤΥ饹. ̾IO饹Υ֥饹 +ƱͤϤǤ. + +SuperClass: BasicSocket + +Methods: + + addr + + åȤ³ɽ֤. γǤ1 + ʸ "AF_UNIX", 2ǤpathǤ. + + path + + UNIXåȤΥѥ֤. + + peeraddr + + ³襽åȤξɽ֤. γǤ + addr᥽åɤ֤ƱǤ. + +Single Methods: + + open(path) + new(path) + + pathǻꤷѥ̾Ѥ³åȤ֤. + +------------------------------------------------------- +Local variables: +fill-column: 70 +end: -- cgit v1.2.3