mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Convert from JIS to EUC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dbe06b680b
commit
6bbab099c0
2 changed files with 216 additions and 216 deletions
|
@ -1,4 +1,4 @@
|
||||||
irb$B4XO"$*$^$1%3%^%s%I$H%i%$%V%i%j(B
|
irb関連おまけコマンドとライブラリ
|
||||||
$Release Version: 0.7.1 $
|
$Release Version: 0.7.1 $
|
||||||
$Revision$
|
$Revision$
|
||||||
$Date$
|
$Date$
|
||||||
|
@ -6,66 +6,66 @@ irb$B4XO"$*$^$1%3%^%s%I$H%i%$%V%i%j(B
|
||||||
|
|
||||||
==begin
|
==begin
|
||||||
|
|
||||||
:$B%3%^%s%I(B:
|
:コマンド:
|
||||||
* rtags -- ruby tags command
|
* rtags -- ruby tags command
|
||||||
|
|
||||||
:$B4X?t%i%$%V%i%j(B:
|
:関数ライブラリ:
|
||||||
* xmp -- irb version of gotoken xmp-function
|
* xmp -- irb version of gotoken xmp-function
|
||||||
|
|
||||||
:$B%/%i%9%i%$%V%i%j(B:
|
:クラスライブラリ:
|
||||||
* frame.rb -- frame tracer
|
* frame.rb -- frame tracer
|
||||||
* completion.rb -- irb completor
|
* completion.rb -- irb completor
|
||||||
|
|
||||||
= rtags
|
= rtags
|
||||||
|
|
||||||
rtags$B$O(Bemacs$B5Z$S(Bvi$BMQ$N(B, TAG$B%U%!%$%k$r$D$/$k%3%^%s%I$G$9(B.
|
rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです.
|
||||||
|
|
||||||
== $B;H$$J}(B
|
== 使い方
|
||||||
|
|
||||||
rtags [-vi] file....
|
rtags [-vi] file....
|
||||||
|
|
||||||
$B%+%l%s%H%G%#%l%/%H%j$K(Bemacs$BMQ$N(BTAGS$B%U%!%$%k$,$G$-$^$9(B. -vi$B%*%W%7%g%s$r(B
|
カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを
|
||||||
$B$D$1$?;~$K$O(Bvi$BMQ$N(Btags$B%U%!%$%k$r:n@.$7$^$9(B.
|
つけた時にはvi用のtagsファイルを作成します.
|
||||||
|
|
||||||
emacs$B$N>l9g(B, $BDL>o$N(Betags.el$B$,$=$N$^$^;H$($^$9(B. $B8!:w2DG=$J$N$O(B,
|
emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは,
|
||||||
|
|
||||||
* $B%/%i%9(B
|
* クラス
|
||||||
* $B%a%=%C%I(B
|
* メソッド
|
||||||
* $BFC0[%a%=%C%I(B
|
* 特異メソッド
|
||||||
* alias
|
* alias
|
||||||
* attr$B$G@k8@$5$l$?%"%/%;%5(B($B%Q%i%a!<%?$,%7%s%\%k$+J8;zNs%j%F%i%k$K8B$k(B)
|
* attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
|
||||||
* attr_XXX$B$G@k8@$5$l$?%"%/%;%5(B($B%Q%i%a!<%?$,%7%s%\%k$+J8;zNs%j%F%i%k$K8B$k(B)
|
* attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
|
||||||
|
|
||||||
$B$G$9(B.
|
です.
|
||||||
|
|
||||||
C$B$J$I$G;H$C$F$$$k$N$H0c$&$N$O(B, $B%3%s%W%j!<%7%g%s$K4X$9$kItJ,$G(B,
|
Cなどで使っているのと違うのは, コンプリーションに関する部分で,
|
||||||
|
|
||||||
$B4X?tL>$O(B,
|
関数名は,
|
||||||
|
|
||||||
$B4X?tL>(B(
|
関数名(
|
||||||
|
|
||||||
$B%/%i%9$O(B,
|
クラスは,
|
||||||
|
|
||||||
::$B%/%i%9L>(B::....::$B%/%i%9L>(B
|
::クラス名::....::クラス名
|
||||||
|
|
||||||
$B%a%=%C%I$O(B,
|
メソッドは,
|
||||||
|
|
||||||
::$B%/%i%9L>(B::....::$B%/%i%9L>(B#$B%a%=%C%IL>(B
|
::クラス名::....::クラス名#メソッド名
|
||||||
|
|
||||||
$BFC0[%a%=%C%I(B($B%/%i%9%a%=%C%I(B)$B$O(B
|
特異メソッド(クラスメソッド)は
|
||||||
|
|
||||||
::$B%/%i%9L>(B::....::$B%/%i%9L>(B.$B%a%=%C%IL>(B
|
::クラス名::....::クラス名.メソッド名
|
||||||
|
|
||||||
$B$G%3%s%W%j!<%7%g%s$r9T$J$&$H$3$m$G$9(B.
|
でコンプリーションを行なうところです.
|
||||||
|
|
||||||
= xmp.rb
|
= xmp.rb
|
||||||
|
|
||||||
$B$4$H$1$s(Bxmp$B$N>e0L8_49%P!<%8%g%s$G$9(B. $B$?$@(B, $BHs>o$K=E$$$N$G$4$H$1$s(Bxmp$B$G(B
|
ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで
|
||||||
$B$OBP1~$G$-$J$$;~$K(B, $B;HMQ$9$k$HNI$$$G$7$g$&(B.
|
は対応できない時に, 使用すると良いでしょう.
|
||||||
|
|
||||||
== $B;H$$J}(B
|
== 使い方
|
||||||
|
|
||||||
=== $B4X?t$H$7$F;H$&(B.
|
=== 関数として使う.
|
||||||
|
|
||||||
require "irb/xmp"
|
require "irb/xmp"
|
||||||
xmp <<END
|
xmp <<END
|
||||||
|
@ -78,10 +78,10 @@ C$B$J$I$G;H$C$F$$$k$N$H0c$&$N$O(B, $B%3%s%W%j!<%7%g%s$K4X$9$kItJ,$G(B,
|
||||||
foo
|
foo
|
||||||
==>1
|
==>1
|
||||||
|
|
||||||
=== XMP$B%$%s%9%?%s%9$rMQ$$$k(B.
|
=== XMPインスタンスを用いる.
|
||||||
|
|
||||||
$B$3$N>l9g$O(B, XMP$B$,%3%s%F%-%9%H>pJs$r;}$D$N$G(B, $BJQ?t$NCM$J$I$rJ];}$7$F$$(B
|
この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
|
||||||
$B$^$9(B.
|
ます.
|
||||||
|
|
||||||
require "irb/xmp"
|
require "irb/xmp"
|
||||||
xmp = XMP.new
|
xmp = XMP.new
|
||||||
|
@ -100,50 +100,50 @@ C$B$J$I$G;H$C$F$$$k$N$H0c$&$N$O(B, $B%3%s%W%j!<%7%g%s$K4X$9$kItJ,$G(B,
|
||||||
foo
|
foo
|
||||||
==>1
|
==>1
|
||||||
|
|
||||||
== $B%3%s%F%-%9%H$K4X$7$F(B
|
== コンテキストに関して
|
||||||
|
|
||||||
XMP$B%a%=%C%I72$N%3%s%F%-%9%H$O(B, $B8F$S=P$9A0$N%3%s%F%-%9%H$GI>2A$5$l$^$9(B.
|
XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます.
|
||||||
$BL@<(E*$K%3%s%F%-%9%H$r;XDj$9$k$H$=$N%3%s%F%-%9%H$GI>2A$7$^$9(B.
|
明示的にコンテキストを指定するとそのコンテキストで評価します.
|
||||||
|
|
||||||
$BNc(B:
|
例:
|
||||||
|
|
||||||
xmp "foo", an_binding
|
xmp "foo", an_binding
|
||||||
|
|
||||||
:$BCm(B:
|
:注:
|
||||||
$B%^%k%A%9%l%C%I$K$OBP1~$7$F$$$^$;$s(B.
|
マルチスレッドには対応していません.
|
||||||
|
|
||||||
= frame.rb
|
= frame.rb
|
||||||
$B8=:_<B9TCf$N%U%l!<%`>pJs$r<h$j07$&$?$a$N%/%i%9$G$9(B.
|
現在実行中のフレーム情報を取り扱うためのクラスです.
|
||||||
|
|
||||||
* IRB::Frame.top(n = 0)
|
* IRB::Frame.top(n = 0)
|
||||||
$B>e$+$i(Bn$BHVL\$N%3%s%F%-%9%H$r<h$j=P$7$^$9(B. n$B$O(B0$B$,:G>e0L$K$J$j$^$9(B.
|
上からn番目のコンテキストを取り出します. nは0が最上位になります.
|
||||||
* IRB::Frame.bottom(n = 0)
|
* IRB::Frame.bottom(n = 0)
|
||||||
$B2<$+$i(Bn$BHVL\$N%3%s%F%-%9%H$r<h$j=P$7$^$9(B. n$B$O(B0$B$,:G2<0L$K$J$j$^$9(B.
|
下からn番目のコンテキストを取り出します. nは0が最下位になります.
|
||||||
* IRB::Frame.sender
|
* IRB::Frame.sender
|
||||||
$B%;%s%@$K$J$C$F$$$k%*%V%8%'%/%H$r<h$j=P$7$^$9(B. $B%;%s%@$H$O(B, $B$=$N%a%=%C(B
|
センダになっているオブジェクトを取り出します. センダとは, そのメソッ
|
||||||
$B%I$r8F$S=P$7$?B&$N(Bself$B$N$3$H$G$9(B.
|
ドを呼び出した側のselfのことです.
|
||||||
|
|
||||||
:$BCm(B:
|
:注:
|
||||||
set_trace_func$B$rMQ$$$F(BRuby$B$N<B9T$r%H%l!<%9$7$F$$$^$9(B. $B%^%k%A%9%l%C%I$K(B
|
set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに
|
||||||
$B$OBP1~$7$F$$$^$;$s(B.
|
は対応していません.
|
||||||
|
|
||||||
= completion.rb
|
= completion.rb
|
||||||
irb$B$N(Bcompletion$B5!G=$rDs6!$9$k$b$N$G$9(B.
|
irbのcompletion機能を提供するものです.
|
||||||
|
|
||||||
== $B;H$$J}(B
|
== 使い方
|
||||||
|
|
||||||
% irb -r irb/completion
|
% irb -r irb/completion
|
||||||
|
|
||||||
$B$H$9$k$+(B, ~/.irbrc $BCf$K(B
|
とするか, ~/.irbrc 中に
|
||||||
|
|
||||||
require "irb/completion"
|
require "irb/completion"
|
||||||
|
|
||||||
$B$rF~$l$F$/$@$5$$(B. irb$B<B9TCf$K(B require "irb/completion" $B$7$F$b$h$$$G$9(B.
|
を入れてください. irb実行中に require "irb/completion" してもよいです.
|
||||||
|
|
||||||
irb$B<B9TCf$K(B (TAB) $B$r2!$9$H%3%s%W%l!<%7%g%s$7$^$9(B.
|
irb実行中に (TAB) を押すとコンプレーションします.
|
||||||
|
|
||||||
$B%H%C%W%l%Y%k$G(B(TAB)$B$r2!$9$H$9$Y$F$N9=J8MWAG(B, $B%/%i%9(B, $B%a%=%C%I$N8uJd$,$G(B
|
トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで
|
||||||
$B$^$9(B. $B8uJd$,M#0l$J$i$P40A4$KJd40$7$^$9(B.
|
ます. 候補が唯一ならば完全に補完します.
|
||||||
|
|
||||||
irb(main):001:0> in
|
irb(main):001:0> in
|
||||||
in inspect instance_eval
|
in inspect instance_eval
|
||||||
|
@ -154,8 +154,8 @@ irb$B<B9TCf$K(B (TAB) $B$r2!$9$H%3%s%W%l!<%7%g%s$7$^$9(B.
|
||||||
irb(main):002:0> foo = Object.new
|
irb(main):002:0> foo = Object.new
|
||||||
#<Object:0x4027146c>
|
#<Object:0x4027146c>
|
||||||
|
|
||||||
((|$BJQ?tL>(B.|))$B$N8e$K(B(TAB)$B$r2!$9$H(B, $B$=$N%*%V%8%'%/%H$N%a%=%C%I0lMw$,$G$^(B
|
((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま
|
||||||
$B$9(B.
|
す.
|
||||||
|
|
||||||
irb(main):003:0> foo.
|
irb(main):003:0> foo.
|
||||||
foo.== foo.frozen? foo.protected_methods
|
foo.== foo.frozen? foo.protected_methods
|
||||||
|
|
|
@ -4,27 +4,27 @@ irb -- interactive ruby
|
||||||
$Date$
|
$Date$
|
||||||
by Keiju ISHITSUKA(keiju@ishitsuka.com)
|
by Keiju ISHITSUKA(keiju@ishitsuka.com)
|
||||||
==begin
|
==begin
|
||||||
= irb$B$H$O(B?
|
= irbとは?
|
||||||
|
|
||||||
irb$B$O(Binteractive ruby$B$NN,$G$9(B. ruby$B$N<0$rI8=`F~NO$+$i4JC1$KF~NO(B/$B<B9T$9(B
|
irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行す
|
||||||
$B$k$?$a$N%D!<%k$G$9(B.
|
るためのツールです.
|
||||||
|
|
||||||
= $B5/F0(B
|
= 起動
|
||||||
|
|
||||||
% ruby -r irb -e0
|
% ruby -r irb -e0
|
||||||
% irb
|
% irb
|
||||||
|
|
||||||
$B$N$$$:$l$+$G9T$J$$$^$9(B. $BA0<T$N>l9g(Birb$B$X$N%*%W%7%g%s;XDj$O(B, $B0J2<$N$h$&$K(B
|
のいずれかで行ないます. 前者の場合irbへのオプション指定は, 以下のように
|
||||||
$B$J$j$^$9(B.
|
なります.
|
||||||
|
|
||||||
% ruby -r irb -e0 -- -v
|
% ruby -r irb -e0 -- -v
|
||||||
|
|
||||||
= $B;H$$J}(B
|
= 使い方
|
||||||
|
|
||||||
irb$B$N;H$$J}$O(B, Ruby$B$5$(CN$C$F$$$l$P$$$?$C$F4JC1$G$9(B. $B4pK\E*$K$O(B irb $B$H(B
|
irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と
|
||||||
$B$$$&%3%^%s%I$r<B9T$9$k$@$1$G$9(B. irb$B$r<B9T$9$k$H(B, $B0J2<$N$h$&$J%W%m%s%W(B
|
いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ
|
||||||
$B%H$,I=$l$F$-$^$9(B. $B8e$O(B, ruby$B$N<0$rF~$l$F2<$5$$(B. $B<0$,407k$7$?;~E@$G<B9T(B
|
トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行
|
||||||
$B$5$l$^$9(B.
|
されます.
|
||||||
|
|
||||||
dim% irb
|
dim% irb
|
||||||
irb(main):001:0> 1+2
|
irb(main):001:0> 1+2
|
||||||
|
@ -37,50 +37,50 @@ irb$B$N;H$$J}$O(B, Ruby$B$5$(CN$C$F$$$l$P$$$?$C$F4JC1$G$9(B. $B4pK\E*$K$O(
|
||||||
nil
|
nil
|
||||||
irb(main):007:0>
|
irb(main):007:0>
|
||||||
|
|
||||||
$B$^$?(B, irb$B$O(BReadline$B%b%8%e!<%k$K$bBP1~$7$F$$$^$9(B. Readline$B%b%8%e!<%k$,(B
|
また, irbはReadlineモジュールにも対応しています. Readlineモジュールが
|
||||||
$B%$%s%9%H!<%k$5$l$F$$$k;~$K$O(B, $B$=$l$r;H$&$N$,I8=`$NF0:n$K$J$j$^$9(B.
|
インストールされている時には, それを使うのが標準の動作になります.
|
||||||
|
|
||||||
= $B%3%^%s%I%*%W%7%g%s(B
|
= コマンドオプション
|
||||||
|
|
||||||
irb.rb [options] file_name opts
|
irb.rb [options] file_name opts
|
||||||
options:
|
options:
|
||||||
-f ~/.irbrc $B$rFI$_9~$^$J$$(B.
|
-f ~/.irbrc を読み込まない.
|
||||||
-m bc$B%b!<%I(B($BJ,?t(B, $B9TNs$N7W;;$,$G$-$k(B)
|
-m bcモード(分数, 行列の計算ができる)
|
||||||
-d $DEBUG $B$r(Btrue$B$K$9$k(B(ruby -d $B$HF1$8(B)
|
-d $DEBUG をtrueにする(ruby -d と同じ)
|
||||||
-r load-module ruby -r $B$HF1$8(B.
|
-r load-module ruby -r と同じ.
|
||||||
--inspect $B7k2L=PNO$K(Binspect$B$rMQ$$$k(B(bc$B%b!<%I0J30$O%G%U%)%k%H(B).
|
--inspect 結果出力にinspectを用いる(bcモード以外はデフォルト).
|
||||||
--noinspect $B7k2L=PNO$K(Binspect$B$rMQ$$$J$$(B.
|
--noinspect 結果出力にinspectを用いない.
|
||||||
--readline readline$B%i%$%V%i%j$rMxMQ$9$k(B.
|
--readline readlineライブラリを利用する.
|
||||||
--noreadline readline$B%i%$%V%i%j$rMxMQ$7$J$$(B. $B%G%U%)%k%H$NF0:n$O(B,
|
--noreadline readlineライブラリを利用しない. デフォルトの動作は,
|
||||||
inf-reuby-mode$B0J30$G(Breadline$B%i%$%V%i%j$rMxMQ$7$h$&(B
|
inf-reuby-mode以外でreadlineライブラリを利用しよう
|
||||||
$B$H$9$k(B.
|
とする.
|
||||||
--prompt prompt-mode
|
--prompt prompt-mode
|
||||||
--prompt-mode prompt-mode
|
--prompt-mode prompt-mode
|
||||||
$B%W%m%s%W%H%b!<%I$r@ZBX$($^$9(B. $B8=:_Dj5A$5$l$F$$$k%W(B
|
プロンプトモードを切替えます. 現在定義されているプ
|
||||||
$B%m%s%W%H%b!<%I$O(B, defalut, simple, xmp, inf-ruby$B$,(B
|
ロンプトモードは, defalut, simple, xmp, inf-rubyが
|
||||||
$BMQ0U$5$l$F$$$^$9(B. $B%G%U%)%k%H$O(Bdefault$B%W%m%s%W%H%b!<(B
|
用意されています. デフォルトはdefaultプロンプトモー
|
||||||
$B%I$K$J$C$F$$$^$9(B.
|
ドになっています.
|
||||||
|
|
||||||
--inf-ruby-mode emacs$B$N(Binf-ruby-mode$BMQ$N%W%m%s%W%HI=<($r9T$J$&(B. $BFC(B
|
--inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
|
||||||
$B$K;XDj$,$J$$8B$j(B, readline$B%i%$%V%i%j$O;H$o$J$/$J$k(B.
|
に指定がない限り, readlineライブラリは使わなくなる.
|
||||||
--simple-prompt
|
--simple-prompt
|
||||||
$BHs>o$K%7%s%W%k$J%W%m%s%W%H$rMQ$$$k%b!<%I$G$9(B.
|
非常にシンプルなプロンプトを用いるモードです.
|
||||||
--noprompt $B%W%m%s%W%HI=<($r9T$J$o$J$$(B.
|
--noprompt プロンプト表示を行なわない.
|
||||||
--tracer $B%3%^%s%I<B9T;~$K%H%l!<%9$r9T$J$&(B.
|
--tracer コマンド実行時にトレースを行なう.
|
||||||
--back-trace-limit n
|
--back-trace-limit n
|
||||||
$B%P%C%/%H%l!<%9I=<($r%P%C%/%H%l!<%9$NF,$+$i(B n, $B8e$m(B
|
バックトレース表示をバックトレースの頭から n, 後ろ
|
||||||
$B$+$i(Bn$B$@$19T$J$&(B. $B%G%U%)%k%H$O(B16
|
からnだけ行なう. デフォルトは16
|
||||||
--irb_debug n irb$B$N%G%P%C%0%G%P%C%0%l%Y%k$r(Bn$B$K@_Dj$9$k(B($BMxMQ$7$J(B
|
--irb_debug n irbのデバッグデバッグレベルをnに設定する(利用しな
|
||||||
$B$$J}$,L5Fq$G$7$g$&(B).
|
い方が無難でしょう).
|
||||||
-v, --version irb$B$N%P!<%8%g%s$rI=<($9$k(B
|
-v, --version irbのバージョンを表示する
|
||||||
|
|
||||||
= $B%3%s%U%#%.%e%l!<%7%g%s(B
|
= コンフィギュレーション
|
||||||
|
|
||||||
irb$B5/F0;~$K(B``~/.irbrc''$B$rFI$_9~$_$^$9(B. $B$b$7B8:_$7$J$$>l9g$O(B,
|
irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は,
|
||||||
``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''$B$N=g$K(Bload$B$r;n$_$^$9(B.
|
``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます.
|
||||||
|
|
||||||
$B%*%W%7%g%s$r@_Dj$9$kBe$o$j$K(B, $B0J2<$N%3%^%s%I$G$b%G%U%)%k%H$NF0:n$r@_Dj(B
|
オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定
|
||||||
$B$G$-$^$9(B.
|
できます.
|
||||||
|
|
||||||
IRB.conf[:IRB_NAME]="irb"
|
IRB.conf[:IRB_NAME]="irb"
|
||||||
IRB.conf[:MATH_MODE]=false
|
IRB.conf[:MATH_MODE]=false
|
||||||
|
@ -101,42 +101,42 @@ irb$B5/F0;~$K(B``~/.irbrc''$B$rFI$_9~$_$^$9(B. $B$b$7B8:_$7$J$$>l9g$O(B,
|
||||||
IRB.conf[:DEBUG_LEVEL]=0
|
IRB.conf[:DEBUG_LEVEL]=0
|
||||||
IRB.conf[:VERBOSE]=true
|
IRB.conf[:VERBOSE]=true
|
||||||
|
|
||||||
== $B%W%m%s%W%H$N@_Dj(B
|
== プロンプトの設定
|
||||||
|
|
||||||
$B%W%m%s%W%H$r%+%9%?%^%$%:$7$?$$;~$K$O(B,
|
プロンプトをカスタマイズしたい時には,
|
||||||
|
|
||||||
IRB.conf[:PROMPT]
|
IRB.conf[:PROMPT]
|
||||||
|
|
||||||
$B$rMQ$$$^$9(B. $BNc$($P(B, .irbrc$B$NCf$G2<$N$h$&$J<0$r5-=R$7$^$9(B:
|
を用います. 例えば, .irbrcの中で下のような式を記述します:
|
||||||
|
|
||||||
IRB.conf[:PROMPT][:MY_PROMPT] = { # $B%W%m%s%W%H%b!<%I$NL>A0(B
|
IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
|
||||||
:PROMPT_I => nil, # $BDL>o$N%W%m%s%W%H(B
|
:PROMPT_I => nil, # 通常のプロンプト
|
||||||
:PROMPT_S => nil, # $BJ8;zNs$J$I$N7QB39T$N%W%m%s%W%H(B
|
:PROMPT_S => nil, # 文字列などの継続行のプロンプト
|
||||||
:PROMPT_C => nil, # $B<0$,7QB3$7$F$$$k;~$N%W%m%s%W%H(B
|
:PROMPT_C => nil, # 式が継続している時のプロンプト
|
||||||
:RETURN => " ==>%s\n" # $B%j%?!<%s;~$N%W%m%s%W%H(B
|
:RETURN => " ==>%s\n" # リターン時のプロンプト
|
||||||
}
|
}
|
||||||
|
|
||||||
$B%W%m%s%W%H%b!<%I$r;XDj$7$?$$;~$K$O(B,
|
プロンプトモードを指定したい時には,
|
||||||
|
|
||||||
irb --prompt my-prompt
|
irb --prompt my-prompt
|
||||||
|
|
||||||
$B$G$=$N%W%m%s%W%H%b!<%I$G5/F0$5$l$^$9(B. $B$^$?$O(B, .irbrc$B$K2<<0$r5-=R$7$F$b(B
|
でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
|
||||||
OK$B$G$9(B.
|
OKです.
|
||||||
|
|
||||||
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
||||||
|
|
||||||
PROMPT_I, PROMPT_S, PROMPT_C$B$O(B, $B%U%)!<%^%C%H$r;XDj$7$^$9(B.
|
PROMPT_I, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
|
||||||
|
|
||||||
%N $B5/F0$7$F$$$k%3%^%s%IL>$,=PNO$5$l$k(B.
|
%N 起動しているコマンド名が出力される.
|
||||||
%m main$B%*%V%8%'%/%H(B(self)$B$,(Bto_s$B$G=PNO$5$l$k(B.
|
%m mainオブジェクト(self)がto_sで出力される.
|
||||||
%M main$B%*%V%8%'%/%H(B(self)$B$,(Binspect$B$5$l$F=PNO$5$l$k(B.
|
%M mainオブジェクト(self)がinspectされて出力される.
|
||||||
%l $BJ8;zNsCf$N%?%$%W$rI=$9(B(", ', /, ], `]'$B$O(B%w$B$NCf$N;~(B)
|
%l 文字列中のタイプを表す(", ', /, ], `]'は%wの中の時)
|
||||||
%NNi $B%$%s%G%s%H$N%l%Y%k$rI=$9(B. NN$B$O?t;z$,F~$j(Bprintf$B$N(B%NNd$B$HF1$8(B. $B>J(B
|
%NNi インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省
|
||||||
$BN,2DG=(B
|
略可能
|
||||||
%NNn $B9THV9f$rI=$7$^$9(B.
|
%NNn 行番号を表します.
|
||||||
%% %
|
%% %
|
||||||
|
|
||||||
$BNc$($P(B, $B%G%U%)%k%H$N%W%m%s%W%H%b!<%I$O(B:
|
例えば, デフォルトのプロンプトモードは:
|
||||||
|
|
||||||
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
||||||
:PROMPT_I => "%N(%m):%03n:%i> ",
|
:PROMPT_I => "%N(%m):%03n:%i> ",
|
||||||
|
@ -145,156 +145,156 @@ PROMPT_I, PROMPT_S, PROMPT_C$B$O(B, $B%U%)!<%^%C%H$r;XDj$7$^$9(B.
|
||||||
:RETURN => "%s\n"
|
:RETURN => "%s\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
$B$H$J$C$F$$$^$9(B.
|
となっています.
|
||||||
|
|
||||||
RETURN$B$O(B, $B8=:_$N$H$3$m(Bprintf$B7A<0$G$9(B. $B>-Mh;EMM$,JQ$o$k$+$bCN$l$^$;$s(B.
|
RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.
|
||||||
|
|
||||||
== $B%5%V(Birb$B$N@_Dj(B
|
== サブirbの設定
|
||||||
|
|
||||||
$B%3%^%s%I%i%$%s%*%W%7%g%s$*$h$S(BIRB.conf$B$O(B($B%5%V(B)irb$B5/F0;~$N%G%U%)%k%H$N(B
|
コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの
|
||||||
$B@_Dj$r7h$a$k$b$N$G(B, `5. $B%3%^%s%I(B'$B$K$"$k(Bconf$B$G8DJL$N(B($B%5%V(B)irb$B$N@_Dj$,$G(B
|
設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで
|
||||||
$B$-$k$h$&$K$J$C$F$$$^$9(B.
|
きるようになっています.
|
||||||
|
|
||||||
IRB.conf[:IRB_RC]$B$K(Bproc$B$,@_Dj$5$l$F$$$k$H(B, $B%5%V(Birb$B$r5/F0$9$k;~$K$=$N(B
|
IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその
|
||||||
proc$B$r(Birb$B$N%3%s%F%-%9%H$r0z?t$H$7$F8F$S=P$7$^$9(B. $B$3$l$K$h$C$F8DJL$N%5(B
|
procをirbのコンテキストを引数として呼び出します. これによって個別のサ
|
||||||
$B%V(Birb$B$4$H$K@_Dj$rJQ$($k$3$H$,$G$-$k$h$&$K$J$j$^$9(B.
|
ブirbごとに設定を変えることができるようになります.
|
||||||
|
|
||||||
|
|
||||||
= $B%3%^%s%I(B
|
= コマンド
|
||||||
|
|
||||||
irb$B3HD%%3%^%s%I$O(B, $B4JC1$JL>A0$HF,$K(B`irb_'$B$r$D$1$?L>A0$HN>J}Dj5A$5$l$F(B
|
irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて
|
||||||
$B$$$^$9(B. $B$3$l$O(B, $B4JC1$JL>A0$,(Boverride$B$5$l$?;~$N$?$a$G$9(B.
|
います. これは, 簡単な名前がoverrideされた時のためです.
|
||||||
|
|
||||||
--- exit, quit, irb_exit
|
--- exit, quit, irb_exit
|
||||||
$B=*N;$9$k(B.
|
終了する.
|
||||||
$B%5%V(Birb$B$N>l9g(B, $B$=$N%5%V(Birb$B$r=*N;$9$k(B.
|
サブirbの場合, そのサブirbを終了する.
|
||||||
cb$B$7$F$$$k>l9g(B, $B$=$N%P%$%s%G%#%s%0$N%b!<%I$r=*N;$9$k(B.
|
cbしている場合, そのバインディングのモードを終了する.
|
||||||
|
|
||||||
--- conf, irb_context
|
--- conf, irb_context
|
||||||
irb$B$N8=:_$N@_Dj$rI=<($9$k(B. $B@_Dj$NJQ99$O(B, conf$B$K%a%C%;!<%8$rAw$k$3(B
|
irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ
|
||||||
$B$H$K$h$C$F9T$J$($k(B.
|
とによって行なえる.
|
||||||
|
|
||||||
--- conf.back_trace_limit
|
--- conf.back_trace_limit
|
||||||
$B%P%C%/%H%l!<%9I=<($r%P%C%/%H%l!<%9$NF,$+$i(Bn, $B8e$m$+$i(Bn$B$@$19T$J$&(B.
|
バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう.
|
||||||
$B%G%U%)%k%H$O(B16
|
デフォルトは16
|
||||||
|
|
||||||
--- conf.debug_level = N
|
--- conf.debug_level = N
|
||||||
irb$BMQ$N%G%P%C%0%l%Y%k$N@_Dj(B
|
irb用のデバッグレベルの設定
|
||||||
|
|
||||||
--- conf.ignore_eof = true/false
|
--- conf.ignore_eof = true/false
|
||||||
^D$B$,F~NO$5$l$?;~$NF0:n$r@_Dj$9$k(B. true$B$N;~$O(B^D$B$rL5;k$9$k(B, false$B$N(B
|
^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの
|
||||||
$B;~$O(Birb$B$r=*N;$9$k(B.
|
時はirbを終了する.
|
||||||
|
|
||||||
--- conf.ignore_sigint= true/false
|
--- conf.ignore_sigint= true/false
|
||||||
^C$B$,F~NO$5$l$?;~$NF0:n$r@_Dj$9$k(B. false$B;~$O(B, irb$B$r=*N;$9$k(B. true$B$N(B
|
^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの
|
||||||
$B;~$NF0:n$O0J2<$N$h$&$K$J$k(B:
|
時の動作は以下のようになる:
|
||||||
$BF~NOCf(B: $B$3$l$^$GF~NO$7$?$b$N$r%-%c%s%;%k$7%H%C%W%l%Y%k$KLa$k(B.
|
入力中: これまで入力したものをキャンセルしトップレベルに戻る.
|
||||||
$B<B9TCf(B: $B<B9T$rCf;_$9$k(B.
|
実行中: 実行を中止する.
|
||||||
|
|
||||||
--- conf.inf_ruby_mode = true/false
|
--- conf.inf_ruby_mode = true/false
|
||||||
inf-ruby-mode$BMQ$N%W%m%s%W%HI=<($r9T$J$&(B. $B%G%U%)%k%H$O(Bfalse.
|
inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse.
|
||||||
|
|
||||||
--- conf.inspect_mode = true/false/nil
|
--- conf.inspect_mode = true/false/nil
|
||||||
$B%$%s%9%Z%/%H%b!<%I$r@_Dj$9$k(B.
|
インスペクトモードを設定する.
|
||||||
true: $B%$%s%9%Z%/%H$7$FI=<($9$k(B.
|
true: インスペクトして表示する.
|
||||||
false: $BDL>o$N(Bprint$B$GI=<($9$k(B.
|
false: 通常のprintで表示する.
|
||||||
nil: $BDL>o%b!<%I$G$"$l$P(B, inspect mode$B$H$J$j(B, math$B%b!<%I$N;~$O(B, non
|
nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non
|
||||||
inspect mode$B$H$J$k(B.
|
inspect modeとなる.
|
||||||
|
|
||||||
--- conf.irb_level
|
--- conf.irb_level
|
||||||
$B;2>H$N$_(B. irb$B$,2?CJ(Bcb$B$7$F$$$k$+(B?
|
参照のみ. irbが何段cbしているか?
|
||||||
|
|
||||||
--- conf.math_mode
|
--- conf.math_mode
|
||||||
$B;2>H$N$_(B. bc$B%b!<%I(B($BJ,?t(B, $B9TNs$N7W;;$,$G$-$^$9(B)$B$+$I$&$+(B?
|
参照のみ. bcモード(分数, 行列の計算ができます)かどうか?
|
||||||
|
|
||||||
--- conf.use_loader = true/false
|
--- conf.use_loader = true/false
|
||||||
load/require$B;~$K(Birb$B$N(Bfile$BFI$_9~$_5!G=$rMQ$$$k%b!<%I$N%9%$%C%A(B($B%G%U%)(B
|
load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ
|
||||||
$B%k%H$OMQ$$$J$$(B). $B$3$N%b!<%I$O(BIRB$BA4BN$KH?1G$5$l$k(B.
|
ルトは用いない). このモードはIRB全体に反映される.
|
||||||
|
|
||||||
--- conf.prompt_c
|
--- conf.prompt_c
|
||||||
if$B$ND>8e$J$I(B, $B9T$,7QB3$7$F$$$k;~$N%W%m%s%W%H(B.
|
ifの直後など, 行が継続している時のプロンプト.
|
||||||
|
|
||||||
--- conf.prompt_i
|
--- conf.prompt_i
|
||||||
$BDL>o$N%W%m%s%W%H(B.
|
通常のプロンプト.
|
||||||
|
|
||||||
--- conf.prompt_s
|
--- conf.prompt_s
|
||||||
$BJ8;zNsCf$J$I$rI=$9%W%m%s%W%H(B.
|
文字列中などを表すプロンプト.
|
||||||
|
|
||||||
--- conf.rc
|
--- conf.rc
|
||||||
~/.irbrc$B$rFI$_9~$s$@$+$I$&$+(B?
|
~/.irbrcを読み込んだかどうか?
|
||||||
|
|
||||||
--- conf.use_prompt = true/false
|
--- conf.use_prompt = true/false
|
||||||
$B%W%m%s%W%HI=<($9$k$+$I$&$+(B? $B%G%U%)%k%H$G$O%W%m%s%W%H$rI=<($9$k(B.
|
プロンプト表示するかどうか? デフォルトではプロンプトを表示する.
|
||||||
|
|
||||||
--- conf.use_readline = true/false/nil
|
--- conf.use_readline = true/false/nil
|
||||||
readline$B$r;H$&$+$I$&$+(B?
|
readlineを使うかどうか?
|
||||||
true: readline$B$r;H$&(B.
|
true: readlineを使う.
|
||||||
false: readline$B$r;H$o$J$$(B.
|
false: readlineを使わない.
|
||||||
nil: ($B%G%U%)%k%H(B)inf-reuby-mode$B0J30$G(Breadline$B%i%$%V%i%j$rMxMQ$7$h(B
|
nil: (デフォルト)inf-reuby-mode以外でreadlineライブラリを利用しよ
|
||||||
$B$&$H$9$k(B.
|
うとする.
|
||||||
|
|
||||||
--- conf.verbose=T/F
|
--- conf.verbose=T/F
|
||||||
irb$B$+$i$$$m$$$m$J%a%C%;!<%8$r=PNO$9$k$+(B?
|
irbからいろいろなメッセージを出力するか?
|
||||||
|
|
||||||
--- cb, irb_change_binding [obj]
|
--- cb, irb_change_binding [obj]
|
||||||
$B%m!<%+%kJQ?t$N%9%3!<%W$,0c$&?7$?$J(Bbinding$B$K0\$k(B. obj$B$,;XDj$5$l$?(B
|
ローカル変数のスコープが違う新たなbindingに移る. objが指定された
|
||||||
$B;~$O(B, $B$=$N(Bobj$B$r(Bself$B$H$9$k(B.
|
時は, そのobjをselfとする.
|
||||||
|
|
||||||
--- irb [obj]
|
--- irb [obj]
|
||||||
$B%5%V(Birb$B$rN)$A$"$2$k(B. obj$B$,;XDj$5$l$?;~$O(B, $B$=$N(Bobj$B$r(Bself$B$H$9$k(B.
|
サブirbを立ちあげる. objが指定された時は, そのobjをselfとする.
|
||||||
|
|
||||||
--- jobs, irb_jobs
|
--- jobs, irb_jobs
|
||||||
$B%5%V(Birb$B$N%j%9%H(B
|
サブirbのリスト
|
||||||
|
|
||||||
--- fg n, irb_fg n
|
--- fg n, irb_fg n
|
||||||
$B;XDj$7$?%5%V(Birb$B$K%9%$%C%A$9$k(B. n$B$O(B, $B<!$N$b$N$r;XDj$9$k(B.
|
指定したサブirbにスイッチする. nは, 次のものを指定する.
|
||||||
|
|
||||||
irb$BHV9f(B
|
irb番号
|
||||||
$B%9%l%C%I(B
|
スレッド
|
||||||
irb$B%*%V%8%'%/%H(B
|
irbオブジェクト
|
||||||
self(irb obj$B$G5/F0$7$?;~$N(Bobj)
|
self(irb objで起動した時のobj)
|
||||||
|
|
||||||
--- kill n, irb_kill n
|
--- kill n, irb_kill n
|
||||||
$B%5%V(Birb$B$r(Bkill$B$9$k(B. n$B$O(Bfg$B$HF1$8(B.
|
サブirbをkillする. nはfgと同じ.
|
||||||
|
|
||||||
|
|
||||||
= $B%7%9%F%`JQ?t(B
|
= システム変数
|
||||||
|
|
||||||
_ $BA0$N7W;;$N<B9T7k2L$r3P$($F$$$k(B($B%m!<%+%kJQ?t(B).
|
_ 前の計算の実行結果を覚えている(ローカル変数).
|
||||||
|
|
||||||
= $B;HMQNc(B
|
= 使用例
|
||||||
|
|
||||||
$B0J2<$N$h$&$J46$8$G$9(B.
|
以下のような感じです.
|
||||||
|
|
||||||
dim% ruby irb.rb
|
dim% ruby irb.rb
|
||||||
irb(main):001:0> irb # $B%5%V(Birb$B$NN)$A$"$2(B
|
irb(main):001:0> irb # サブirbの立ちあげ
|
||||||
irb#1(main):001:0> jobs # $B%5%V(Birb$B$N%j%9%H(B
|
irb#1(main):001:0> jobs # サブirbのリスト
|
||||||
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
||||||
#1->irb#1 on main (#<Thread:0x40125d64> : running)
|
#1->irb#1 on main (#<Thread:0x40125d64> : running)
|
||||||
nil
|
nil
|
||||||
irb#1(main):002:0> fg 0 # job$B$N%9%$%C%A(B
|
irb#1(main):002:0> fg 0 # jobのスイッチ
|
||||||
nil
|
nil
|
||||||
irb(main):002:0> class Foo;end
|
irb(main):002:0> class Foo;end
|
||||||
nil
|
nil
|
||||||
irb(main):003:0> irb Foo # Foo$B$r%3%s%F%-%9%H$7$F(Birb
|
irb(main):003:0> irb Foo # Fooをコンテキストしてirb
|
||||||
# $BN)$A$"$2(B
|
# 立ちあげ
|
||||||
irb#2(Foo):001:0> def foo # Foo#foo$B$NDj5A(B
|
irb#2(Foo):001:0> def foo # Foo#fooの定義
|
||||||
irb#2(Foo):002:1> print 1
|
irb#2(Foo):002:1> print 1
|
||||||
irb#2(Foo):003:1> end
|
irb#2(Foo):003:1> end
|
||||||
nil
|
nil
|
||||||
irb#2(Foo):004:0> fg 0 # job$B$r%9%$%C%A(B
|
irb#2(Foo):004:0> fg 0 # jobをスイッチ
|
||||||
nil
|
nil
|
||||||
irb(main):004:0> jobs # job$B$N%j%9%H(B
|
irb(main):004:0> jobs # jobのリスト
|
||||||
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
||||||
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||||||
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||||||
nil
|
nil
|
||||||
irb(main):005:0> Foo.instance_methods # Foo#foo$B$,$A$c$s$HDj5A$5(B
|
irb(main):005:0> Foo.instance_methods # Foo#fooがちゃんと定義さ
|
||||||
# $B$l$F$$$k(B
|
# れている
|
||||||
["foo"]
|
["foo"]
|
||||||
irb(main):006:0> fg 2 # job$B$r%9%$%C%A(B
|
irb(main):006:0> fg 2 # jobをスイッチ
|
||||||
nil
|
nil
|
||||||
irb#2(Foo):005:0> def bar # Foo#bar$B$rDj5A(B
|
irb#2(Foo):005:0> def bar # Foo#barを定義
|
||||||
irb#2(Foo):006:1> print "bar"
|
irb#2(Foo):006:1> print "bar"
|
||||||
irb#2(Foo):007:1> end
|
irb#2(Foo):007:1> end
|
||||||
nil
|
nil
|
||||||
|
@ -304,36 +304,36 @@ irb$B3HD%%3%^%s%I$O(B, $B4JC1$JL>A0$HF,$K(B`irb_'$B$r$D$1$?L>A0$HN>J}Dj5A$5
|
||||||
nil
|
nil
|
||||||
irb(main):007:0> f = Foo.new
|
irb(main):007:0> f = Foo.new
|
||||||
#<Foo:0x4010af3c>
|
#<Foo:0x4010af3c>
|
||||||
irb(main):008:0> irb f # Foo$B$N%$%s%9%?%s%9$G(Birb$B$r(B
|
irb(main):008:0> irb f # Fooのインスタンスでirbを
|
||||||
# $BN)$A$"$2$k(B.
|
# 立ちあげる.
|
||||||
irb#3(#<Foo:0x4010af3c>):001:0> jobs
|
irb#3(#<Foo:0x4010af3c>):001:0> jobs
|
||||||
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
||||||
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||||||
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||||||
#3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
|
#3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
|
||||||
nil
|
nil
|
||||||
irb#3(#<Foo:0x4010af3c>):002:0> foo # f.foo$B$N<B9T(B
|
irb#3(#<Foo:0x4010af3c>):002:0> foo # f.fooの実行
|
||||||
nil
|
nil
|
||||||
irb#3(#<Foo:0x4010af3c>):003:0> bar # f.bar$B$N<B9T(B
|
irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barの実行
|
||||||
barnil
|
barnil
|
||||||
irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# job$B$N(Bkill
|
irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobのkill
|
||||||
nil
|
nil
|
||||||
irb(main):009:0> jobs
|
irb(main):009:0> jobs
|
||||||
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
||||||
nil
|
nil
|
||||||
irb(main):010:0> exit # $B=*N;(B
|
irb(main):010:0> exit # 終了
|
||||||
dim%
|
dim%
|
||||||
|
|
||||||
= $B;HMQ>e$N@)8B(B
|
= 使用上の制限
|
||||||
|
|
||||||
irb$B$O(B, $BI>2A$G$-$k;~E@(B($B<0$,JD$8$?;~E@(B)$B$G$NC`<!<B9T$r9T$J$$$^$9(B. $B$7$?$,$C(B
|
irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ
|
||||||
$B$F(B, ruby$B$rD>@\;H$C$?;~$H(B, $B<c430[$J$kF0:n$r9T$J$&>l9g$,$"$j$^$9(B.
|
て, rubyを直接使った時と, 若干異なる動作を行なう場合があります.
|
||||||
|
|
||||||
$B8=:_L@$i$+$K$J$C$F$$$kLdBjE@$r@bL@$7$^$9(B.
|
現在明らかになっている問題点を説明します.
|
||||||
|
|
||||||
== $B%m!<%+%kJQ?t$N@k8@(B
|
== ローカル変数の宣言
|
||||||
|
|
||||||
ruby$B$G$O(B, $B0J2<$N%W%m%0%i%`$O%(%i!<$K$J$j$^$9(B.
|
rubyでは, 以下のプログラムはエラーになります.
|
||||||
|
|
||||||
eval "foo = 0"
|
eval "foo = 0"
|
||||||
foo
|
foo
|
||||||
|
@ -342,24 +342,24 @@ ruby$B$G$O(B, $B0J2<$N%W%m%0%i%`$O%(%i!<$K$J$j$^$9(B.
|
||||||
---
|
---
|
||||||
NameError
|
NameError
|
||||||
|
|
||||||
$B$H$3$m$,(B, irb$B$rMQ$$$k$H(B
|
ところが, irbを用いると
|
||||||
|
|
||||||
>> eval "foo = 0"
|
>> eval "foo = 0"
|
||||||
=> 0
|
=> 0
|
||||||
>> foo
|
>> foo
|
||||||
=> 0
|
=> 0
|
||||||
|
|
||||||
$B$H$J$j(B, $B%(%i!<$r5/$3$7$^$;$s(B. $B$3$l$O(B, ruby$B$,:G=i$K%9%/%j%W%HA4BN$r%3%s(B
|
となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン
|
||||||
$B%Q%$%k$7$F%m!<%+%kJQ?t$r7hDj$9$k$+$i$G$9(B. $B$=$l$KBP$7(B, irb$B$O<B9T2DG=$K(B
|
パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
|
||||||
$B$J$k(B($B<0$,JD$8$k(B)$B$H<+F0E*$KI>2A$7$F$$$k$+$i$G$9(B. $B>e5-$NNc$G$O(B,
|
なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
|
||||||
|
|
||||||
evel "foo = 0"
|
evel "foo = 0"
|
||||||
|
|
||||||
$B$r9T$J$C$?;~E@$GI>2A$r9T$J$$(B, $B$=$N;~E@$GJQ?t$,Dj5A$5$l$k$?$a(B, $B<!<0$G(B
|
を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
|
||||||
$BJQ?t(Bfoo$B$ODj5A$5$l$F$$$k$+$i$G$9(B.
|
変数fooは定義されているからです.
|
||||||
|
|
||||||
$B$3$N$h$&$J(Bruby$B$H(Birb$B$NF0:n$N0c$$$r2r7h$7$?$$>l9g$O(B, begin...end$B$G3g$C$F(B
|
このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って
|
||||||
$B%P%C%AE*$K<B9T$7$F2<$5$$(B:
|
バッチ的に実行して下さい:
|
||||||
|
|
||||||
>> begin
|
>> begin
|
||||||
?> eval "foo = 0"
|
?> eval "foo = 0"
|
||||||
|
@ -369,14 +369,14 @@ ruby$B$G$O(B, $B0J2<$N%W%m%0%i%`$O%(%i!<$K$J$j$^$9(B.
|
||||||
(irb):3
|
(irb):3
|
||||||
(irb_local_binding):1:in `eval'
|
(irb_local_binding):1:in `eval'
|
||||||
|
|
||||||
== $B%R%"%I%-%e%a%s%H(B
|
== ヒアドキュメント
|
||||||
|
|
||||||
$B8=:_$N$H$3$m%R%"%I%-%e%a%s%H$N<BAu$OIT40A4$G$9(B.
|
現在のところヒアドキュメントの実装は不完全です.
|
||||||
|
|
||||||
== $B%7%s%\%k(B
|
== シンボル
|
||||||
|
|
||||||
$B%7%s%\%k$G$"$k$+$I$&$+$NH=CG$r4V0c$($k$3$H$,$"$j$^$9(B. $B6qBNE*$K$O<0$,40N;(B
|
シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了
|
||||||
$B$7$F$$$k$N$K7QB39T$H8+$J$9$3$H$,$"$j$^$9(B.
|
しているのに継続行と見なすことがあります.
|
||||||
|
|
||||||
==end
|
==end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue