Google

$BA0(B - $B - $BL\

Ruby$B$NJ8K!(B



$B;z6g9=B$(B

Ruby$B$N8=:_$N.J8;z$O6hJL$5$l$^$9!%<1JL;R$H0lIt$N%j%F(B $B%i%k$NESCf$r=|$$$F$OG$0U$N>l=j$K6uGrJ8;z$d%3%a%s%H$rCV$/$3$H(B $B$,$G$-$^$9!%6uGrJ8;z$H$O%9%Z!<%9!$%?%V!$?bD>%?%V!$%P%C%/%9%Z!<(B $B%9!$%-%c%j%C%8%j%?!<%s!$2~%Z!<%8$G$9!%2~9T$O9T$,L@$i$+$K

$B<1JL;R(B

$BNc(B:

	foobar
	ruby_is_simple

Ruby$B$N<1JL;R$O1QJ8;z$^$?$O%"%s%@!<%9%3%"(B('_')$B$+(B $B$i;O$^$j!$1QJ8;z!$%"%s%@!<%9%3%"(B('_')$B$^$?$O?t;z(B $B$+$i$J$j$^$9!%<1JL;R$ND9$5$K@)8B$O$"$j$^$;$s!%(B

$B%3%a%s%H(B

$BNc(B:

	# this is a comment line

$B%9%/%j%W%H8@8l$N=,47$K$J$i$$!$J8;zNsCf$d?tCM%j%F%i%k(B (?#)$B0J30$N(B#$B$+$i9TKv$^$G$r%3%a%s%H(B $B$H8+$J$7$^$9!%(B

$BKd$a9~$_%I%-%e%a%s%H(B

$BNc(B:

	=begin
	the everything between a line beginning with `=begin' and
	that with `=end' will be skipped by the interpreter.
	=end

Ruby$B$N%=!<%9%3!<%I$K%I%-%e%a%s%H$rKd$a9~$`;v$,$G$-$^$9!%J8$,(B $B;O$^$kItJ,$N9TF,$K(B=begin$B$,$"$k$H!$$=$3$+$i$O$8(B $B$^$C$F!$(B=end$B$G;O$^$k9T$^$G$OKd$a9~$_%I%-%e%a%s(B $B%H$H$7$FFI$_Ht$P$5$l$^$9!%(B

$BM=Ls8l(B

$BM=Ls8l$O0J2<$K$"$2$k$b$N$G$9(B:

	BEGIN	 class	  ensure   nil	    self     when
	END	 def	  false    not	    super    while
	alias	 defined  for	   or	    then     yield
	and	 do	  if	   redo     true
	begin	 else	  in	   rescue   undef
	break	 elsif	  module   retry    unless
	case	 end	  next	   return   until

$BM=Ls8l$O%/%i%9L>!$JQ?tL>$J$I$KMQ$$$k$3$H$O$G$-$^$;$s!%$7$+$7!$(B `$', `@'$B$,@hF,$K$D$$$?$b$N$OM=Ls8l(B $B$H8+$J$5$l$^$;$s!%L@<(E*$K%a%=%C%IL>$G$"$k$HJ,$+$k>l9g$K$O%a(B $B%=%C%IL>$H$7$FMQ$$$k$3$H$,$G$-$^$9!%(B

$B%W%m%0%i%`(B

$BNc(B:

	print "hello world!\n"

$B%W%m%0%i%`$O<0$rJB$Y$?$b$N$G$9!%<0$H<0$N4V$O%;%_%3%m%s(B (;)$B$^$?$O2~9T$G6h@Z$i$l$^$9!%$?$@$7!$%P%C%/%9%i%C(B $B%7%e$KB3$/2~9T$OJ8$N6h@Z$j$K$J$i$:!$

$B<0(B

$BNc(B:

	true
	(1+2)*3
	foo()
	if test then ok else ng end

$B<0$O3g8L$K$h$C$F%0%k!<%T%s%0$9$k$3$H$,$G$-$^$9!%(B

$BJ8;zNs%j%F%i%k(B

$BNc(B:

	"this is a string expression\n"
	"concat#{foobar}"
	'concat#{foobar}'
	%q!I said, "You said, 'She said it.'"!
	%!I said, "You said, 'She said it.'"!
	%Q('This is it.'\n)

$BJ8;zNs$O%@%V%k%/%)!<%H$^$?$O%7%s%0%k%/%)!<%H$G0O$^$l$F$$$^$9!%(B $B%@%V%k%/%)!<%H$G0O$^$l$?J8;zNs$G$O%P%C%/%9%i%C%7%e$K$h$k%(%9(B $B%1!<%W$H<0E83+(B($B8e=R(B)$B$,M-8z$K$J$j$^$9!%%7%s%0%k%/%)!<%H$G0O$^(B $B$l$?J8;zNs$G$O!$(B\\($B%P%C%/%9%i%C%7%e$=$N$b$N(B)$B$H(B \'($B%7%s%0%k%/%)!<%H(B)$B$r=|$$$FJ8;zNs$NCf?H$N2r

%$B$G;O$^$k7A<0$NJ8;zNs$rMQ$$$k$3$H$G%P%C%/%9%i%C(B $B%7%e$N?t$r8:$i$9$3$H$,$G$-$^$9!%(B %q!STRING! $B$O%7%s%0%k%/%)!<%HJ8;zNs!$(B %Q!STRING! ($B$^$?$O(B %!STRING!)$B$O%@%V%k%/%)!<%HJ8;zNs$HF1$8E83+$r9T$$$^$9!%(B !$B$NItJ,$K$O2~9T$r4^$a$?G$0U$NHs1Q?t;z$r(B $B;H$&$3$H$,$G$-$^$9!%;O$^$j$N6h@Z$jJ8;z$,3g8L(B (`(',`[',`{',`<')$B$G$"$k;~$K$O!$=*$j$N6h@Z$jJ8;z$OBP1~$9$k3g8L$K$J$j$^$9!%(B

$B%P%C%/%9%i%C%7%e5-K!(B

\t
$B%?%V(B(0x09)
\n
$B2~9T(B(0x0a)
\r
$B%-%c%j%C%8%j%?!<%s(B(0x0d)
\f
$B2~%Z!<%8(B(0x0c)
\b
$B%P%C%/%9%Z!<%9(B(0x08)
\a
$B%Y%k(B(0x07)
\e
$B%(%9%1!<%W(B(0x1b)
\s
$B6uGr(B(0x20)
\nnn
8$B?J?tI=5-(B(n$B$O(B0-7)
\xnn
16$B?J?tI=5-(B(n$B$O(B0-9,a-f)
\cx
\C-x
$B%3%s%H%m!<%kJ8;z(B(x$B$O(BASCII$BJ8;z(B)
\M-x
$B%a%?(B x (c | 0x80)
\M-\C-x
$B%a%?(B $B%3%s%H%m!<%k(B x
\x
$BJ8;z(Bx$B$=$N$b$N(B

$BJ8;zNs<0$OI>2A$5$l$k$?$S$KKh2s?7$7$$J8;zNs%*%V%8%'%/%H$r@8@.(B $B$7$^$9!%(B

$B%3%^%s%I=PNO(B

$BNc(B:

	`date`
	%x{ date }

$B%P%C%/%/%)!<%H(B(`)$B$G0O$^$l$?J8;zNs$O!$%@%V%k%/%)!<(B $B%H$G0O$^$l$?J8;zNs$HF1MM$K%P%C%/%9%i%C%7%e5-K!$N2r2A$5$l$k$?$S$K

%x/STRING/$B7A<0$O%3%^%s%I=PNO<0$NJL$N7A<0$G$9!%(B

$B@55,I=8=(B

$BNc(B:

	/^Ruby the OOPL/
	/Ruby/i
	/my name is #{myname}/o

/$B$G0O$^$l$?J8;zNs$O@55,I=8=$G$9!%(B $B=*$j$N(B/$B$ND>8e$NJ8;z$O@55,I=8=$KBP$9$k%*%W%7%g%s$K$J$j$^$9!%(B $B%*%W%7%g%s$N5!G=$O0J2<$NDL$j$G$9!%(B

i

$B@55,I=8=$O%^%C%A;~$KBgJ8;z>.J8;z$N6hJL$r9T$o$J$$(B

o

$B0lHV:G=i$K@55,I=8=$NI>2A$,9T$o$l$?;~$K(B $B0lEY$@$1(B$B<0E83+(B$B$r9T$&(B

x

$B@55,I=8=Cf$N6uGr$rL5;k$9$k!%%3%a%s%H$bIU$1$i$l$k(B

p

POSIX$B%b!<%I!%2~9T$bDL>oJ8;z$H8+$J$9(B

Ruby$B$OF|K\8l2=$5$l$F$$$k$N$G!$>e5-$N%*%W%7%g%s$NB>$K(B n, e,s$B$N%*%W%7%g%s$,;XDj$G$-$^$9!%(B $B$3$l$i$O(B$KCODE$B$NCM$K$+$+$o$i$:!$(B $B@55,I=8=$,%^%C%A$K;HMQ$9$kJ8;z%3!<%I$r;XDj$9$k$b$N$G$9!%(B

%r/STRING/$B7A<0$O@55,I=8=<0$NJL$N7A<0$G$9!%(B

^
$B9TF,(B
$
$B9TKv(B
.
$B2~9T$r=|$/G$0U$N(B1$BJ8;z(B
\w
$B1Q?t;z!%(B[0-9A-Za-z_]$B$HF1$8(B
$BF|K\8l$N$$$o$f$kA43QJ8;z$b4^$`(B
\W
$BHs1Q?t;z(B
\s
$B6uGrJ8;z!%(B[ \t\n\r\f]$B$HF1$8(B
\S
$BHs6uGrJ8;z(B
\d
$B?t;z!%(B[0-9] $B$HF1$8(B
\D
$BHs?t;z(B
\A
$BJ8;zNs@hF,(B
\Z
$BJ8;zNsKvHx(B($B2~9T$,$"$l$P2~9T$ND>A0(B)
\z
$BJ8;zNsKvHx(B
\b
$B8l6-3&(B($BJ8;z%/%i%930(B)
\B
$BHs8l6-3&(B
\b
$B%P%C%/%9%Z!<%9(B(0x08)([]$BFb(B)
[ ]
$BJ8;z%/%i%9;XDj(B
*
$BD>A0$NI=8=$N(B0$B2s0J>e$N7+$jJV$7(B
*?
$BD>A0$NI=8=$N(B0$B2s0J>e$N7+$jJV$7(B($B:GC;0lCW(B)
+
$BD>A0$NI=8=$N(B1$B2s0J>e$N7+$jJV$7(B
+?
$BD>A0$NI=8=$N(B1$B2s0J>e$N7+$jJV$7(B($B:GC;0lCW(B)
{m,n}
$BD>A0$NI=8=$N(Bm$B2s$+$i(Bn$B2s$N7+$jJV$7(B
{m,n}?
$BD>A0$NI=8=$N(Bm$B2s$+$i(Bn$B2s$N7+$jJV$7(B($B:GC;0lCW(B)
?
0$B$^$?$O(B1$B2s$ND>A0$NI=8=(B
|
$BA*Br(B
( )
$B@55,I=8=$r%0%k!<%W2=(B
(?# )
$B%3%a%s%H(B
(?: )
$B8eJ};2>H$rH<$o$J$$%0%k!<%W2=(B
(?= )
$B%Q%?!<%s$K$h$k0LCV;XDj(B($BI}$r;}$?$J$$(B)
(?! )
$B%Q%?!<%s$NH]Dj$K$h$k0LCV;XDj(B($BI}$r;}$?$J$$(B)
(?ixp-ixp)
$B@55,I=8=Cf$G$N(Bi$B%*%W%7%g%s!$(Bx$B%*%W%7%g%s!$(Bp$B%*%W%7%g%s$N(Bon/off$B!%3g8L$NHO0OFb$G@_Dj(B
(?ixp-ixp: )
$B3g8LFb$N(Bi$B%*%W%7%g%s!$(Bx$B%*%W%7%g%s!$(Bp$B%*%W%7%g%s$N(Bon/off$B!%(B

$B@55,I=8=$NCf$G$OJ8;zNs$HF1$8%P%C%/%9%i%C%7%e5-K!$d<0E83+$b(B $BM-8z$G$9!%(B

$BJ8;zNsCf$N<0E83+(B

$BNc(B:

	"my name is #{$ruby}"

$B%@%V%k%/%)!<%H(B(")$B$G0O$^$l$?J8;zNs<0!$%3%^%s%IJ8(B $B;zNs$*$h$S@55,I=8=!$$NCf$G$O(B#{$B<0(B}$B$H$$$&7A<0$G<0(B $B$NFbMF(B($B$rJ8;zNs2=$7$?$b$N(B)$B$rKd$a9~$`$3$H$,$G$-$^$9!%<0$,JQ?t(B $B5-9f(B($,@)$B$G;O$^$kJQ?t$N>l9g$K$O(B {}$B$r>JN,$7$F!$(B#$BJQ?tL>(B$B$H$$$&7A<0$G(B $B$bE83+$G$-$^$9!%J8;z(B#$B$KB3$/J8;z$,(B {,$,@$B$G$J$1$l$P!$$=$N(B $B$^$^J8;z(B#$B$H$7$F2r#$B$NA0$K%P%C%/%9%i%C%7%e$rCV$-$^$9!%(B

$B%R%"%I%-%e%a%s%H(B ($B9T;X8~J8;zNs%j%F%i%k(B)

$B%7%'%k$N$h$&$J9T;X8~$NJ8;zNs%j%F%i%k$NI=8=$b$"$j$^$9!%$3$N$h(B $B$&$JJ8;zNs%j%F%i%k$r!V%R%"%I%-%e%a%s%H!W$H8F$S$^$9!%(B <<$B$KB3$$$F!$0zMQ=*N;5-9f$K$J$kJ8;zNs$^$?(B $B$O<1JL;R$r;XDj$7$^$9!%J8;zNs$r;XDj$7$?>l9g$O!$$=$NJ8;zNs$N""$B!$(B''$B!$(B``)$B$,J8;zNsA4BN$N@-<<$B$N8e$m$K$O6uGr$rCV$/$3$H$O$G$-$^$;$s!%(B

$B<1JL;R$^$?$OJ8;zNs$NA0$K(B-$B$,CV$+$l$?>l9g!$6h@Z$j(B $BJ8;zNs$NA0$N6uGrJ8;z(B($B%?%V$H%9%Z!<%9(B)$B$,

	  print <<EOF
	The price is #{$Price}.
	EOF

	  print <<"EOF"			# $B>e$HF1$8(B
	The price is #{$Price}.
	EOF

	  print <<`EOC`			# $B%3%^%s%I$r

$B?tCM%j%F%i%k(B

123
$B@0?t(B
-123
$BId9f$D$-@0?t(B
1_234
$B@0?t(B(10$B?J@0?t$O(B_$B$r4^$`$3$H$,$G$-$k(B)
123.45
$BIbF0>.?tE@?t(B
1.2e-3
$BIbF0>.?tE@?t(B
0xffff
16$B?J@0?t(B
0b1011
2$B?J@0?t(B
0377
8$B?J@0?t(B
?a
$BJ8;z(Ba$B$N%3!<%I(B(97)
?\C-a
$B%3%s%H%m!<%k(B a $B$N%3!<%I(B(1)
?\M-a
$B%a%?(B a $B$N%3!<%I(B(225)
?\M-\C-a
$B%a%?(B-$B%3%s%H%m!<%k(B a $B$N%3!<%I(B(129)
:symbol
$B<1JL;R(B/$BJQ?tL>(B/$B1i;;;R$H0lBP0lBP1~$9$k@0?t!%(B

?$BI=8=$G$OA4$F$N%P%C%/%9%i%C%7%e5-K!$,M-8z$G$9!%(B

$BJQ?t$HDj?t(B

Ruby$B$NJQ?t$HDj?t$N$N:G=i$N0lJ8;z$K$h$C$F!$%0%m!<(B $B%P%kJQ?t!$%$%s%9%?%s%9JQ?t!$%m!<%+%kJQ?t!$%/%i%9Dj?t$N$$$:$l(B $B$+$K6hJL$5$l$^$9!%DL>o$NJQ?t$N(B2$BJ8;zL\0J9_$O1Q?t;z$^$?$O(B _$B$G$"$k$,!$%7%9%F%`JQ?t$N0lIt$K$O(B $B!V(B`$'+1$BJ8;z$N5-9f!W$H$$$&JQ?t$,$"$j$^$9!%JQ?tL>(B $B$ND9$5$K4X$7$F%a%b%j$N%5%$%:0J30$KFCJL$J@)8B$O$"$j$^$;$s!%(B

$B%0%m!<%P%kJQ?t(B

$BNc(B:

	$foobar
	$/

`$'$B$G;O$^$kJQ?t$O%0%m!<%P%kJQ?t$G!$%W%m%0%i%`$N(B $B$I$3$+$i$G$b;2>H$G$-$^$9!%%0%m!<%P%kJQ?t$K$O@k8@$OI,MW$"$j$^(B $B$;$s!%=i4|2=$5$l$F$$$J$$%0%m!<%P%kJQ?t$r;2>H$7$?;~$NCM$O(B nil$B$G$9!%(B

$B%$%s%9%?%s%9JQ?t(B

$BNc(B:

	@foobar

`@'$B$G;O$^$kJQ?t$O%$%s%9%?%s%9JQ?t$G$"$j!$FCDj$N(B $B%*%V%8%'%/%H$K=jB0$7$F$$$^$9!%%$%s%9%?%s%9JQ?t$O$=$N%/%i%9$^(B $B$?$O%5%V%/%i%9$N%a%=%C%I$+$i;2>H$G$-$^$9!%=i4|2=$5$l$F$$$J$$(B $B%$%s%9%?%s%9JQ?t$r;2>H$7$?;~$NCM$O(Bnil$B$G$9!%(B

$B%m!<%+%kJQ?t(B

$BNc(B:

	foobar

$B>.J8;z$^$?$O(B`_'$B$G;O$^$k<1JL;R$O%m!<%+%kJQ?t$^$?(B $B$O%a%=%C%I8F=P$7$G$9!%%m!<%+%kJQ?t%9%3!<%W(B($B%/%i%9!$%b%8%e!<(B $B%k!$%a%=%C%IDj5A$NK\BN(B)$B$K$*$1$k>.J8;z$G;O$^$k<1JL;R$X$N:G=i(B $B$NBeF~$O$=$N%9%3!<%W$KB0$9$k%m!<%+%kJQ?t$N@k8@$K$J$j$^$9!%@k(B $B8@$5$l$F$$$J$$<1JL;R$N;2>H$O0z?t$NL5$$%a%=%C%I8F$S=P$7$H$_$J(B $B$5$l$^$9!%(B

$B%m!<%+%kJQ?t$N%9%3!<%W$O!$$=$NJQ?t$,@k8@$5$l$?%V%m%C%/!$%a%=%C(B $B%IDj5A!$$^$?$O%/%i%9(B/$B%b%8%e!<%kDj5A$N=*$j$^$G$G$9!%l9g$O!$$=$N%*%V%8%'%/%H$,>CLG$9$k$^$GB8:_$7$^$9!%F1$8(B $B%9%3!<%W$r;2>H$9$k

$B5?;wJQ?t(B

$BDL>o$NJQ?t0J30$K5?;wJQ?t$H8F$P$l$kFC

self
$B8=:_$N%a%=%C%I$Nnil
NilClass$B%/%i%9$NM#0l$N%$%s%9%?%s%9(B
true
TrueClass$B%/%i%9$NM#0l$N%$%s%9%?%s%9!%??$NBeI=CM(B
false
FalseClass$B%/%i%9$NM#0l$N%$%s%9%?%s%9!%(Bnil$B$H(Bfalse$B$O56$rI=$7$^$9!%(B
__FILE__
$B8=:_$N%=!<%9%U%!%$%kL>(B
__LINE__
$B8=:_$N%=!<%9%U%!%$%kCf$N9THV9f(B

$B5?;wJQ?t$NCM$rJQ99$9$k$3$H$O$G$-$^$;$s!%JQ?t$X$NBeF~$ONc30$r(B $BH/@8$5$;$^$9!%(B

$BDj?t(B

$BNc(B:

	FOOBAR

$BBgJ8;z(B([A-Z])$B$G;O$^$k<1JL;R$ODj?t$G$9!%Dj?t$NDj5A(B($B$H=i4|2=(B) $B$OBeF~$K$h$C$F9T$o$l$^$9$,!$%a%=%C%I$NCf$G$ODj5A$G$-$^$;$s!%(B $B0lEYDj5A$5$l$?Dj?t$K:F$SBeF~$r9T$*$&$H$9$k$HNc30$,H/@8$7$^$9!%(B $BDj5A$5$l$F$$$J$$Dj?t$N%"%/%;%9$ONc30$rH/@8$5$;$^$9!%(B

$BDj?t$O$=$NDj?t$,Dj5A$5$l$?%/%i%9(B/$B%b%8%e!<%kDj5A$NCf(B($B%a%=%C%I(B $BK\BN$d%M%9%H$7$?%/%i%9(B/$B%b%8%e!<%kDj5ACf$r4^$_$^$9(B)$B!$%/%i%9$r(B $B7Q>5$7$F$$$k%/%i%9!$%b%8%e!<%k$r%$%s%/%k!<%I$7$F$$$k%/%i%9$^(B $B$?$O%b%8%e!<%k$+$i;2>H$9$k$3$H$,$G$-$^$9!%%/%i%9Dj5A$N30$GDj(B $B5A$5$l$?Dj?t$O(BObject $B$K=jB0$9$k$3$H$K$J$j$^$9!%(B

$B%/%i%9Dj5A$O<+F0E*$KDj?t$rDj5A$9$k$N$G!$%/%i%9L>$ODj?t$G$9!%(B

$B$"$k%/%i%9$^$?$O%b%8%e!<%k$GDj5A$5$l$?Dj?t$r30It$+$i;2>H$9$k(B $B$?$a$K$O(B`::'$B1i;;;R$rMQ$$$^$9!%(B

Object$B%/%i%9$GDj5A$5$l$F$$$kDj?t$r;2>H$9$k$?$a(B $B$K$O:8JUL5$7$N(B`::'$B1i;;;R$rMQ$$$^$9!%(B

$BNc(B:

	Foo::Bar
	::Bar

$B$?$@$7!$(B`::'$B1i;;;R$rMQ$$$?BeF~$O$G$-$^$;$s!%(B

$BG[Ns<0(B

$BNc(B:

	[1, 2, 3]

$BJ8K!(B:

	`[' $B<0(B`,'...`]'

$B$=$l$>$l$N<0$rI>2A$7$?7k2L$r4^$`G[Ns$rJV$7$^$9!%G[Ns$O(BArray$B%/%i%9$N%$%s%9%?%s%9$G$9!%(B

%w$B$H$$$&7A<0$GJ8;zNs$NG[Ns$r4JC1$KI=8=$G$-$^$9!%(B $B$3$l$O%7%s%0%k%/%)!<%H$G0O$s$@J8;zNs$r6uGrJ8;z$GJ,3d$7$?$N$H(B $BF1$8$G$9!%$?$H$($P!$(B

	%w(foo bar baz)

$B$O(B["foo", "bar", "baz"]$B$HEy2A$G$9!%(B

$B%O%C%7%e<0(B

$BNc(B:

	{1=>2, 2=>4, 3=>6}

$BJ8K!(B:

	`{' $B<0(B `=>' $B<0(B...`}'
	`{' $B<0(B `,' $B<0(B...`}'

$B$=$l$>$l$N<0$rI>2A$7$?7k2L$r%-!<$HCM$H$9$k%O%C%7%e%*%V%8%'%/(B $B%H$rJV$7$^$9!%%O%C%7%e$H$OG$0U$N%*%V%8%'%/%H$r%-!<(B($BE:;z(B)$B$H$7$F;}(B $B$DG[Ns$G!$(BHash$B%/%i%9$N%$%s%9%?%s(B $B%9$G$9!%(B

$B%O%C%7%e$NMWAG$,(B1$B$D0J>e$"$k>l9g!$[#Kf$G$J$1$l$P(B {, }$B$O>JN,$G$-$^$9!%(B

$B%a%=%C%I8F=P$7(B

$BNc(B:

	foo.bar()
	foo.bar
	bar()
	print "hello world\n"
	print
	Class::new

$BJ8K!(B:

[$B<0(B `.'] $B<1JL;R(B [`(' $B<0(B...[`*' [$B<0(B]],[`&' $B<0(B] `)']
[$B<0(B `::'] $B<1JL;R(B [`(' $B<0(B...[`*' [$B<0(B]],[`&' $B<0(B] `)']

$B%a%=%C%I8F=P$7<0$O%l%7!<%P(B(`.'$B$N1&B&$N<0$NCM(B)$B$N(B $B%a%=%C%I$r8F$S=P$7$^$9!%%l%7!<%P$,;XDj$5$l$J$$;~$O(Bself $B$N%a%=%C%I$r8F$S=P$7$^$9!%(B

$B%a%=%C%IL>$K$ODL>o$N<1JL;R$NB>!$<1JL;R$K(B?$B$^$?$O(B !$B$NB3$$$?$b$N$,5v$5$l$^$9!%47=,$H$7$F!$=R8l(B($B??(B $B56CM$rJV$9%a%=%C%I(B)$B$K$O(B?$B$r!$F1L>$N(B (!$B$NL5$$(B)$B%a%=%C%I$KHf$Y$F$h$jGK2uE*$J:nMQ$r$b$D(B $B%a%=%C%I(B($BNc(B:tr$B$H(Btr!)$B$K$O(B !$B$r$D$1$k$h$&$K$J$C$F$$$^$9!%(B

$B:G8e$N0z?t$ND>A0$K(B*$B$,$D$$$F$$$k>l9g!$$=$N0z?t$N(B $BCM$,E83+$5$l$FEO$5$l$^$9!%$D$^$j(B:

	foo(*[1,2,3])
$B$O(B
	foo(1,2,3)
$B$HF1$8$G$9!%(B

$B:G8e$N0z?t$ND>A0$K(B&$B$,$D$$$F$$$k>l9g!$$=$N0z(B $B?t$G;XDj$7$?

$B%a%=%C%I$N:]!$(Bprivate$B$J%a%=%C%I$O4X?t7A<0(B($B%l%7!<%P$r(B $B>JN,$7$?7A<0(B)$B$G$7$+8F$S=P$9$3$H$,$G$-$^$;$s!%$^$?(B protected$B$J%a%=%C%I$O(Bself$B$,$=$N%a%=%C%I(B $B$,Dj5A$5$l$?$N$HF1$8%/%i%9(B($B$^$?$O$=$N%5%V%/%i%9(B)$B$G$J$1$l$P8F(B $B$S=P$9$3$H$,$G$-$^$;$s!%(B

super

$BNc(B:

	super
	super(1,2,3)

$BJ8K!(B:

	super
	super($B<0(B,...)

super$B$O8=:_$N%a%=%C%I$,%*!<%P!<%i%$%I$7$F$$$k%a(B $B%=%C%I$r8F$S=P$7$^$9!%0z?t$,>JN,$5$l$?>l9g$K$O8=:_$N%a%=%C%I(B $B$N0z?t$,$=$N$^$^0z$-EO$5$l$^$9!%(B

$BBeF~(B

$BNc(B:

	foo = bar
	foo[0] = bar
	foo.bar = baz

$BJ8K!(B:

	$BJQ?t(B '=' $B<0(B
	$BDj?t(B '=' $B<0(B
	$B<0(B`['expr..`]' '=' $B<0(B
	$B<0(B`.'$B<1JL;R(B '=' $B<0(B

$BBeF~<0$OJQ?t$J$I$KCM$r@_Dj$9$k$?$a$KMQ$$$i$l$^$9!%BeF~$O%m!<(B $B%+%kJQ?t$d%/%i%9Dj?t$N@k8@$K$bMQ$$$i$l$^$9!%BeF~<0$N:8JU$O0J(B $B2<$N$$$:$l$+$GL5$1$l$P$J$j$^$;$s!%(B

  • $BJQ?t(B
    	$BJQ?t(B `=' $B<0(B
    

    $B:8JUCM$,JQ?t$N>l9g!$<0$rI>2A$7$?CM$,JQ?t$KBeF~$5$l$k!%(B

  • $BG[Ns;2>H(B
    	$B<0(B1`[' $B<0(B2...`]' `=' $B<0(Bn
    

    $B$3$N7A<0$NBeF~$O!$<0(B1$B$rI>2A$7$FF@$i$l$k%*%V%8%'%/%H$KBP$7$F(B $B$N<0(B2$B$+$i<0(Bn$B$^$G$r0z?t$H$9$k(B []= $B$H$$$&%a%=%C%I(B $B8F=P$7$H$7$FI>2A$5$l$^$9!%(B

  • $BB0@-;2>H(B
    	$B<0(B1 `.' $B<1JL;R(B `=' $B<0(B2
    

    $B>e5-$N7A<0$NB0@-;2>H%X$NBeF~$O!$<0(B1$B$rI>2A$7$FF@$i$l$k%*%V%8%'(B $B%/%H$KBP$7$F!$(B$B<1JL;R(B=$B$H$$$&%a%=%C%I$r!$<0(B2$B$r0z(B $B?t$H$7$F8F$S=P$7$^$9!%(B

$B<+8JBeF~(B

$BNc(B:

	foo += 12

$BJ8K!(B:

	$B<0(B1 op= $B<0(B2     # $B<0(B1$B$OBeF~2DG=$G$J$1$l$P$J$i$J$$!%(B

$B$3$N7A<0$NBeF~$O(B $B<0(B1 = $B<0(B1 op $B<0(B2 $B$HF1MM$KI>2A(B $B$5$l$^$9!%$?$@$7!$<0(B1$B$O(B1$BEY$7$+I>2A$5$l$^$;$s!%(Bop $B$O0J2<$N$$(B $B$:$l$+$N1i;;;R$GL5$1$l$P$J$j$^$;$s!%(B

	+, -, *, /, %, **, &, |, ^, <<, >>, &&, ||

$B1i;;;R$H(B=$B$N4V$K%9%Z!<%9$r6u$1$F$O$$$1$^$;$s!%(B

$BB?=EBeF~(B

$BNc(B:

	foo, bar, baz = 1, 2, 3
	foo, = list()
	foo, *rest = list2()

$BJ8K!(B:

	$B<0(B `,' [$B<0(B `,'...] [`*' $B<0(B] = $B<0(B [, $B<0(B...][`*' [$B<0(B]]
	`*' $B<0(B = $B<0(B [, $B<0(B...][`*' expr]

$BB?=EBeF~$OJ#?t$N<0$^$?$OG[Ns$+$iF1;~$KBeF~$r9T$$$^$9!%:8JU$N(B $B3F<0$O$=$l$>$lBeF~2DG=$G$J$1$l$P$J$j$^$;$s!%1&JU$N<0$,0l$D$7(B $B$+M?$($i$l$J$+$C$?>l9g!$<0$rI>2A$7$?CM$OG[Ns$KJQ49$5$l$F!$3F(B $BMWAG$,:8JU$N$=$l$>$l$N<0$KBeF~$5$l$^$9!%:8JU$NMWAG$N?t$h$j$b(B $BG[Ns$NMWAG$N?t$NJ}$,B?$$>l9g$K$O!$M>$C$?MWAG$OL5;k$5$l$^$9!%(B $BG[Ns$NMWAG$,B-$j$J$$>l9g$K$OBP1~$9$kMWAG$NL5$$:8JU$K$O(B nil $B$,BeF~$5$l$^$9!%(B

$B:8JU$N:G8e$N<0$ND>A0$K(B * $B$,$D$$$F$$$k$H!$BP1~$9(B $B$k:8JU$N$J$$M>$C$?MWAG$,G[Ns$H$7$FBeF~$5$l$^$9!%M>$C$?MWAG$,(B $BL5$$;~$K$O6u$NG[Ns$,BeF~$5$l$^$9!%(B

$BNc(B:

	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
	foo,*bar = 1, 2, 3	# foo = 1; bar = [2, 3]

$BB?=EBeF~$NCM$OG[Ns$KJQ49$5$l$?1&JU$G$9!%(B

$B1i;;;R<0(B

$BNc(B:

	1+2*3/4

$B%W%m%0%i%_%s%0$NMxJX$N$?$a$K0lIt$N%a%=%C%I8F$S=P$7$H@)8f9=B$$O1i;;;R7A(B $B<0$r$H$j$^$9!%(BRuby$B$K$O0J2<$K$"$2$k1i;;;R$,$"$j$^$9!%(B

	high   ::
	       []
	       **
	       -(unary)  +(unary)  !  ~
	       *  /  %
	       +  -
	       <<  >>
	       &
	       |  ^
	       >  >=  <  <=
	       <=> ==  === !=  =~  !~
	       &&
	       ||
	       .. ...
	       =(+=, -=...)
	       not
	low    and or

$B$[$H$s$I$N1i;;;R$OFCJL$J7A<0$N%a%=%C%I8F$S=P$7$G$9$,!$0lIt$N(B $B$b$N$O8@8l$KAH$_9~$_$G!$:FDj5A$G$-$^$;$s!%:FDj5A$G$-$J$$1i;;(B $B;R7A<0$N@)8f9=B$$O0J2<$NDL$j$G$9!%(B

	=, .., ..., !, not, &&, and, ||, or, ::

$B1i;;;R$NAH9g$;$G$"$k<+8JBeF~1i;;;R$H(B!=, !~ $B$b:FDj5A$G$-$^$;$s!%(B

$B@)8f9=B$(B

Ruby$B$G$O(B(C$B$J$I$H$O0[$J$j(B)$B@)8f9=B$$O<0$G$"$C$F!$2?$i$+$NCM$r(B $B;}$A$^$9!%(BRuby$B$O(BC$B8@8l$d(BPerl$B$+$i0z$-7Q$$$@@)8f9=B$$r;}$A$^$9$,!$(B $B$=$NB>$K(B$B%$%F%l!<%?(B$B$H$$$&%k!<%WCj>]2=$N5!(B $BG=$,$"$j$^$9!%%$%F%l!<%?$O7+$jJV$7$r;O$a$H$9$k@)8f9=B$$r%f!<(B $B%6$,Dj5A$9$k;v$,=PMh$k$b$N$G$9(B.

if

$BNc(B:

	if age >= 12 then
	  print "adult fee\n"
	else
	  print "child fee\n"
	end
	gender = if foo.gender == "male" then "male" else "female" end

$BJ8K!(B:

	if $B<0(B [then]
	  $B<0(B...
	[elsif $B<0(B [then]
	  $B<0(B...]...
	[else
	  $B<0(B...]
	end

if$B<0$O>r7or7o<0$rI>2A$7$?(B $BCM$,(B false $B$^$?$O(B nil $B$N;~!$56$G$"(B $B$k$H8+$J$5$l!$$=$l$i0J30$NA4$F$NCM$O??$G$"$k$H8+$J$5$l$^$9!%(B Ruby$B$G$O(Bif$B$r7R$2$k$N$K!$(Belsif$B$rMQ$$!$(Belse if(C$B$N$h$&$K(B)$B$G$b!$(Belif(sh$B$N$h$&$K(B)$B$G$b(B $BL5$$$3$H$KCm0U$7$F$/$@$5$$!%(B

if $B$N>r7o<0$NItJ,$,J8;zNs$^$?$O@55,I=8=$N%j%F%i(B $B%k$G$"$k;~$K$O!$(B

	$_ =~ $B%j%F%i%k(B
$B$G$"$k$+$N$h$&$KI>2A$5$l$^$9!%(B

if$B=$>~;R(B

$BNc(B:

	print "debug\n" if $debug

$BJ8K!(B:

	$B<0(B if $B<0(B

$B1&JU$N>r7o$,@.N)$9$k;~$K!$:8JU$N<0$rI>2A$7$^$9!%(B

unless

$BNc(B:

	unless $baby
	  feed_meat
	else
	  feed_milk
	end

$BJ8K!(B:

	unless $B<0(B [then]
	  $B<0(B...
	[else
	  $B<0(B...]
	end

unless$B$O>r7or7o$,(Bif $B$HH?BP$G!$>r7o$,56$N;~$K

unless$B=$>~;R(B

$BNc(B:

	print "stop\n" unless valid($passwd)

$BJ8K!(B:

	$B<0(B unless $B<0(B

$B1&JU$N>r7o$,@.N)$7$J$$;~$K!$:8JU$N<0$rI>2A$7$^$9!%(B

case

$BNc(B:

	case $age
	when 0 .. 2
	  "baby"
	when 3 .. 6
	  "little child"
	when 7 .. 12
	  "child"
	when 12 .. 18
  	  # 12$B$O$9$G$K(B"child"$B$K%^%C%A$7$F$$$k(B
	  "youth"
	else
	  "adult"
	end

$BJ8K!(B:

	case $B<0(B
	[when $B<0(B [, $B<0(B]...[then]
	  $B<0(B..]..
	[else
	  $B<0(B..]
	end

case$B$O0l$D$N<0$KBP$9$k0lCWH=Dj$K$h$kJ,4t$r9T$$(B $B$^$9!%(Bwhen$B@a$G;XDj$5$l$?CM$H:G=i$N<0$rI>2A$7$?(B $B7k2L$H$r1i;;;R(B === $B$rMQ$$$FHf3S$7$F!$0lCW$9$k>l(B $B9g$K$O(Bwhen$B@a$NK\BN$r

$B$D$^$j!$(B

	case $B<0(B0
	when $B<0(B1, $B<0(B2
	  stmt1
	when $B<0(B3, $B<0(B4
	  stmt2
	else
	  stmt3
	end

$B$O0J2<$N(Bif$B<0$H$[$\Ey2A$G$9!%(B

===$B$,$I$N$h$&$J>r7o$G??$K$J$k$+$O!$3F%/%i%9$N(B ===$B%a%=%C%I$NF0:n$K$D$$$F$N%I%-%e%a%s%H$r;2>H$7(B $B$F2<$5$$!%(B

	_tmp = $B<0(B0
	if $B<0(B1 === _tmp || $B<0(B2 === _tmp
	  stmt1
	elsif $B<0(B3 === _tmp || $B<0(B4 === _tmp
	  stmt2
	else
	  stmt3
	end

and

$BNc(B:

	test && set
	test and set

$BJ8K!(B:

	$B<0(B `&&' $B<0(B
	$B<0(B `and' $B<0(B

$B$^$:!$:8JU$rI>2A$7$F!$7k2L$,??$G$"$C$?>l9g$K$O1&JU$bI>2A$7$^(B $B$9!%(Band$B$OF1$8F/$-$r$9$kM%@h=g0L$NDc$$1i;;;R$G$9!%(B

or

$BNc(B:

	demo || die
	demo or die

$BJ8K!(B:

	$B<0(B `||' $B<0(B
	$B<0(B or $B<0(B

$B$^$:!$:8JU$rI>2A$7$F!$7k2L$,56$G$"$C$?>l9g$K$O1&JU$bI>2A$7$^(B $B$9!%(Bor$B$OF1$8F/$-$r$9$kM%@h=g0L$NDc$$1i;;;R$G$9!%(B

not

$BNc(B:

	! me
	not me
	i != you

$BJ8K!(B:

	`!' $B<0(B
	not $B<0(B

$B<0$NCM$,??$G$"$k;~56$r!$56$G$"$k;~??$rJV$7$^$9!%(B

	$B<0(B `!=' $B<0(B

!($B<0(B == $B<0(B)$B$HF1$8!%(B

	$B<0(B `!~' $B<0(B

!($B<0(B =~ $B<0(B)$B$HF1$8!%(B

$BHO0O<0(B

$BNc(B:

	1 .. 20
	/first/ ... /second/

$BJ8K!(B:

	$B<0(B1 `..' $B<0(B2
	$B<0(B1 `...' $B<0(B2

$B>r7o<00J30$N>l=j$G$O<0(B1$B$+$i<0(B2$B$^$G$NHO0O%*%V%8%'%/%H$rJV$7$^(B $B$9!%HO0O%*%V%8%'%/%H$O(BRange$B%/%i%9(B $B$N%$%s%9%?%s%9$G$9!%(B...$B$G@8@.$5$l$?HO0O%*%V%8%'%/%H$O(B $B=*C<$r4^$_$^$;$s!%(B

$B>r7o<0$H$7$FHO0O;XDj<0$,MQ$$$i$l$?>l9g$K$O!$<0(B1$B$,??$K$J$k$^(B $B$G$O56$rJV$7!$$=$N8e$O<0(B2$B$,??$rJV$9$^$G$O??$rJV$7$^$9!%<0(B2$B$,(B $B??$K$J$l$P>uBV$O56$KLa$j$^$9!%(B..$B$O<0(B1$B$,??$K$J$C(B $B$?;~$K$9$0$K<0(B2$B$rI>2A$7(B(awk$B$N$h$&$K(B)$B!$(B...$B$O2A$^$G<0(B2$B$rI>2A$7$^$;$s(B(sed$B$N$h$&$K(B)$B!%(B

while

$BNc(B:

	while sunshine
	  work()
	end

$BJ8K!(B:

	while $B<0(B [do]
	  ...
	end

$B<0$rI>2A$7$?CM$,??$N4V!$K\BN$r7+$jJV$7$F

while$B=$>~;R(B

$BNc(B:

	sleep while idle

$BJ8K!(B:

	$B<0(B while $B<0(B

$B1&JU$N<0$rI>2A$7$?CM$,??$N4V!$:8JU$r7+$jJV$7$Fbegin $B$G$"$k>l9g$K$O!$$=$l$r:GDc0lEY$O(B $BI>2A$7$^$9!%(B

until

$BNc(B:

	until sunrise
	  sleep
	end

$BJ8K!(B:

	until $B<0(B [do]
	  ...
	end

$B<0$rI>2A$7$?CM$,??$K$J$k$^$G!$K\BN$r7+$jJV$7$F

until$B=$>~;R(B

$BNc(B:

	work until tired

$BJ8K!(B:

	$B<0(B until $B<0(B

$B1&JU$N<0$rI>2A$7$?CM$,??$K$J$k$^$G!$:8JU$r7+$jJV$7$Fbegin $B$G$"$k>l9g$K$O!$:8JU$r:GDc(B $B0lEY$OI>2A$7$^$9!%(B

$B%$%F%l!<%?(B

$BNc(B:

	[1,2,3].each do |i| print i*2, "\n" end
	[1,2,3].each{|i| print i*2, "\n"}

$BJ8K!(B:

	method_call do [`|' expr...`|'] expr...end
	method_call `{' [`|' $B<0(B...`|'] $B<0(B...`}'

$B%$%F%l!<%?$H$O@)8f9=B$(B($BFC$K%k!<%W(B)$B$NCj>]2=$N$?$a$KMQ$$$i$l$k(B $B%a%=%C%I$N0ldo ... end$B$^$?$O(B { ... } $B$G0O$^$l$?%3!<%I$NCGJR(B($B%V%m%C%/$H8F$P$l$k(B)$B$r(B $B8e$m$KIU$1$F%a%=%C%I$r8F$S=P$9$H!$$=$N%a%=%C%I$NFbIt$+$i%V%m%C(B $B%/$rI>2A$G$-$^$9(B($B$*$=$i$/$OJ#?t2s(B)$B!%$3$N$h$&$J%V%m%C%/$r8F$S(B $B=P$9%a%=%C%I$r%$%F%l!<%?$H8F$S$^$9!%%$%F%l!<%?$+$i$N%V%m%C%/(B $B$N8F$S=P$7$O(Byield$B<0$rMQ$$(B $B$^$9!%(Byield$B$KEO$5$l$?CM$O(B | $B$H(B | $B$N4V$K$O$5$^$l$?JQ?t$KBeF~$5$l$^$9!%(B

{ ... }$B$NJ}$,(Bdo ... end$B%V%m%C%/$h$j$b7k9g6/EY$,(B $B6/$$$G$9!%Nc$($P(B:

	foobar a, b do .. end	# foobar $B$,%$%F%l!<%?$H$7$F8F$S=P$5$l$^$9(B
	foobar a, b { .. }	# b $B$,%$%F%l!<%?$H$7$F8F$S=P$5$l$^$9(B

$B%V%m%C%/$NCf$G=i$a$FBeF~$5$l$?(B($B@k8@$5$l$?(B)$B%m!<%+%kJQ?t$O$=$N(B $B%V%m%C%/$NCf$G$@$1M-8z$G$9!%Nc$($P(B

	foobar {
	  i = 20		# $B%m!<%+%kJQ?t(B `i' $B$,@k8@$5$l$?(B
	  ...
	}
	print defined? i	# `i' $B$O$3$3$G$OL$Dj5A(B
	foobar a, b { .. }	# $B%V%m%C%/FbIt$G$@$1M-8z(B

for

$BNc(B:

	for i in [1, 2, 3]
	  print i*2, "\n"
	end

$BJ8K!(B:

	for lhs... in $B<0(B [do]
	  $B<0(B..
	end

$B<0$rI>2A$7$?7k2L$N%*%V%8%'%/%H$N3FMWAG$KBP$7$FK\BN$r7+$jJV$7(B $B$F ($B<0(B).each `{' `|' lhs..`|' $B<0(B.. `}'

$B!V$[$\!W$H$$$&$N$O!$(Bdo ... end$B$^$?$O(B{ } $B$K$h$k%V%m%C%/$O?7$7$$%m!<%+%kJQ?t$NM-8zHO0O$rF3F~$9(B $B$k$N$KBP$7!$(Bfor$BJ8$O%m!<%+%kJQ?t$N%9%3!<%W$K1F6A(B $B$r5Z$\$5$J$$E@$,0[$J$k$+$i$G$9!%(B

yield

$BNc(B:

	yield data

$BJ8K!(B:

	yield `(' [$B<0(B [`,' $B<0(B...]])
	yield [$B<0(B [`,' $B<0(B...]]

$B0z?t$r%V%m%C%/$N0z?t$H$7$FBeF~$7$F!$%V%m%C%/$NI>2A(B($B$"$k$$$O(B $Byield$B$ryield $B$NCM$O%V%m%C%/$rI>2A$7$?CM$G$9!%(B

raise

$BNc(B:

	raise "you lose"  # $BNc30(BRuntimeError$B$rH/@8$5$;$k(B
	# $B0J2<$NFs$D$O(B SyntaxError $B$rH/@8$5$;$k(B
	raise SyntaxError, "invalid syntax"
	raise SyntaxError.new("invalid syntax")
	raise		  # $B:G8e$NNc30$N:FH/@8(B

$BJ8K!(B:

	raise
	raise message$B$^$?$O(Bexception
	raise error_type, message
	raise error_type, message, traceback

$BNc30$rH/@8$5$;$^$9!%Bh0l$N7A<0$G$OD>A0$NNc30$r:FH/@8$5$;$^$9!%(B $BBhFs$N7A<0$G$O!$0z?t$,J8;zNs$G$"$C$?>l9g!$$=$NJ8;zNs$r%a%C%;!<(B $B%8$H$9$k(B RuntimeError $BNc30$rH/@8$5$;$^$9!%0z?t(B $B$,Nc30$G$"$C$?>l9g$K$O$=$NNc30$rH/@8$5$;$^$9!%Bh;0$N7A<0$G$O(B $BBh0l0z?t$G;XDj$5$l$?Nc30$r!$BhFs0z?t$r%a%C%;!<%8$H$7$FH/@8$5(B $B$;$^$9!%Bh;M$N7A<0$NBh;00z?t$O(B $@$B$^$?$O(B caller$B$GF@$i$l$k(B $B%9%?%C%/>pJs$G!$Nc30$,H/@8$7$?>l=j$r<($7$^$9!%(B

$BH/@8$7$?Nc30$OJQ?t(B $! $B$K3JG<$5$l$^$9!%$^$?Nc30$,(B $BH/@8$7$?%=!<%9%3!<%I>e$N0LCV$OJQ?t(B $@ $B$K3JG<$5$l(B $B$^$9!%(B

raise $B$O(B Ruby $B$NM=Ls8l$G$O$J$/!$(B Kernel $B%b%8%e!<%k$GDj5A$5$l$F$$$k4X?tE*%a%=%C%I$G$9!%(B raise $B$K$O(B fail $B$H$$$&JLL>$bDj5A$5(B $B$l$F$$$^$9!%(B

begin

$BNc(B:

	begin
	  do_something
	rescue
	  recover
	ensure
	  must_to_do
	end

$BJ8K!(B:

	begin
	  $B<0(B..
	[rescue [error_type,..]
	  $B<0(B..]..
	[else
	  $B<0(B..]
	[ensure
	  $B<0(B..]
	end

begin$B$OK\BN$rI>2A$7!$:G8e$KI>2A$5$l$?<0$NCM$rJV(B $B$7$^$9!%(B

$BK\BN$Nl9g!$(Brescue $B@a$,M?(B $B$($i$l$F$$$?>l9gNc30$rJaB*$G$-$^$9!%H/@8$7$?Nc30$H0lCW$9$k(B rescue$B@a$,B8:_$9$k;~$K$O(Brescue$B@a$N(B $BK\BN$,rescue$B@a$G;XDj$7$?%/%i%9$HF1$8$+$^$?$O%5%V%/%i(B $B%9$G$"$k$+$I$&$+(B kind_of? $B$rMQ$$$FH=Dj$5$l$^$9!%%/%i%9$,>JN,$5$l$?;~$O(B StandardError$B$N%5%V%/%i%9$G$"$kA4$F$NNc30$rJaB*$7$^$9!%(B Ruby$B$NAH$_9~$_Nc30$O(B (SystemExit$B$d(BInterrupt$B$N$h$&$J(B $BC&=P$rL\E*$H$7$?$b$N$r=|$$$F(B) StandardError$B$N%5%V%/%i%9$G$9!%(B

rescue$B$G$O(Berror_type$B$ODL>o$N0z?t$H(B $BF1$8$h$&$KI>2A$5$l!$$=$N$$$:$l$+$,0lCW$9$l$PK\BN$,error_type$B$rI>2A$7$?CM$,%/%i%9$d%b%8%e!<%k(B $B$G$J$$>l9g$K$ONc30(BTypeError$B$,H/@8$7$^$9!%(B

begin$B$K$O>JN,2DG=$J(Belse$B@a$r;XDj$9(B $B$k$3$H$,$G$-$F!$K\BN$N

ensure$B@a$,B8:_$9$k;~$O(Bbegin$B<0$r=*(B $BN;$9$kD>A0$KI,$:(Bensure$B@a$NK\BN$rI>2A$7$^$9!%(B

retry

$BNc(B:

	retry

$BJ8K!(B:

	retry

begin$B<0$N(Brescue$B@a$G;H$o$l$?>l9g!$(B begin$B<0$r;O$a$+$i$b$&0lEY

	begin
	  do_something # exception raised
	rescue
	  # handles error
	  retry  # restart from beginning
	end

$B%$%F%l!<%?!$%V%m%C%/$^$?$O(Bfor$BJ8$NCf$G;H$o$l$?>l9g$K$O!$$=$N(B $B%$%F%l!<%?$r5/F0$7$J$*$7$^$9!%%$%F%l!<%?$N0z?t$b:FI>2A$5$l$^(B $B$9!%(B

	for i in 1..5
	  retry if some_condition # i == 1 $B$+$i$d$jD>$7(B
	end
	# $B%f!<%6Dj5A$N(B "until$B%k!<%W(B"
	def UNTIL(cond)
	  yield
	  retry if not cond
	end

rescue$B@a$d%$%F%l!<%?0J30$G(Bretry$B$,MQ$$$i$l$?>l9g(B $B$K$O%(%i!<$K$J$j$^$9!%(B

return

$BNc(B:

	return
	return 12
	return 1,2,3

$BJ8K!(B:

	return [$B<0(B[`,' $B<0(B...]]

$B<0$NCM$rLa$jCM$H$7$F%a%=%C%I$Ne(B $BM?$($i$l$?;~$K$O!$$=$l$i$rMWAG$H$9$kG[Ns$r%a%=%C%I$NLa$jCM$H(B $B$7$^$9!%<0$,0l$D$b$J$$>l9g$K$O(B nil $B$,La$jCM$H$J(B $B$j$^$9!%(B

break

$BNc(B:

	i=0
	while i<3
	  print i, "\n"
	  break
	end

$BJ8K!(B:

	break

break $B$O$b$C$H$bFbB&$N%k!<%W$rC&=P$7$^$9!%%k!<(B $B%W$H$O(B

  • while
  • until
  • for
  • $B%$%F%l!<%?(B

$B$N$$$:$l$+$r;X$7$^$9!%(BC$B$H0c$$!$(Bbreak$B$O%k!<%W$r(B $BC&=P$9$k:nMQ$@$1$r;}$A!$(Bcase $B$rH4$1$k:nMQ$O;}$A(B $B$^$;$s!%(B

next

$BNc(B:

	next

$BJ8K!(B:

	next

next$B$O$b$C$H$bFbB&$N%k!<%W$N

redo

$BNc(B:

	redo

$BJ8K!(B:

	redo

$B%k!<%W>r7o$N%A%'%C%/$r9T$J$o$:!$8=:_$N7+$jJV$7$r$d$jD>$7$^$9!%(B

BEGIN

$BNc(B:

	BEGIN {
	  ...
	}

$BJ8K!(B:

	BEGIN '{' $BJ8(B.. '}'

$B=i4|2=%k!<%A%s$rEPO?$7$^$9!%(BBEGIN$BD>8e$N(B { }$BFbIt(B(BEGIN$B%V%m%C%/(B)$B$G;XDj$7$?J8(B $B$OEv3:%U%!%$%k$N$I$NJ8$,BEGIN$B$,;XDj$5$l$?>l9g$K$O;XDj$5$l$?=g$KBEGIN$B%V%m%C%/$OFHN)$7$?%m!<%+%kJQ?t$N%9%3!<%W$r(B $BF3F~$9$k$?$a!$%m!<%+%kJQ?t$r30It$H6&M-$9$k;v$O$"$j$^$;$s!%>p(B $BJs$NEAC#$K$O%0%m!<%P%kJQ?t$r;H$&I,MW$,$"$j$^$9!%(B

BEGIN$B$O%H%C%W%l%Y%k$K$7$+CV$/;v$O$G$-$^$;$s!%(B

END

$BNc(B:

	END {
	  ...
	}

$BJ8K!(B:

	END '{' $BJ8(B.. '}'

$B!V8e;OKv!W%k!<%A%s$rEPO?$7$^$9!%(BEND$B%V%m%C%/$G;X(B $BDj$7$?J8$O%$%s%?%W%j%?$,=*N;$9$k;~$KEND$B%V%m%C%/$O!$(BBEGIN$B%V%m%C%/$H$O0[(B $B$J$j!$%$%F%l!<%?$HF1MM$N%9%3!<%W$r;}$A!$<~0O$H%9%3!<%W$r6&M-(B $B$7$^$9!%(BEND$B%V%m%C%/$O0lHV:G=i$KI>2A$5$l$?;~$K(B1 $B2s$@$1EPO?$r9T$$$^$9!%J#?tEPO?$9$kI,MW$,$"$k>l9g$K$O(B at_exit$B$r;H$C$F$/$@$5$$!%(B

END$B$b%H%C%W%l%Y%k$K$7$+CV$/;v$O$G$-$^$;$s!%(B $B$=$l$H!$(BEND$B$GEPO?$5$l$?

$B%/%i%9Dj5A(B

$BNc(B:

	class Foo < Super
	  def test
	     :
	  end
	     :
	end

$BJ8K!(B:

	class $B<1JL;R(B [`<' superclass ]
	  $B<0(B..
	end

$BFC0[%/%i%9Dj5A(B

$BNc(B:

	class << obj
	  def test
	     :
	  end
	     :
	end

$BJ8K!(B:

	class `<<' expr
	  $B<0(B..
	end

$B%/%i%9Dj5A$HF1$89=J8$GFCDj$N%*%V%8%'%/%H$N5!G=$rDj5A$7$^$9!%(B $B$3$N9=J8$NFbIt$GDj5A$7$?%a%=%C%I$dDj?t$O;XDj$7$?%*%V%8%'%/%H(B $B$KBP$7$F$@$1M-8z$K$J$j$^$9!%(B

$B%b%8%e!<%kDj5A(B

$BNc(B:

	module Foo
	  def test
	     :
	  end
	     :
	end

$BJ8K!(B:

	module $B<1JL;R(B
	  $B<0(B..
	end

$B%b%8%e!<%k$rDj5A$7$^$9!%%b%8%e!<%kL>$O%"%k%U%!%Y%C%H$NBgJ8;z(B $B$G;O$^$k<1JL;R$G$9!%(B

$B%a%=%C%IDj5A(B

$BNc(B:

	def fact(n)
	  if n == 1 then
	     1 
	  else
	    n * fact(n-1)
	  end
	end

$BJ8K!(B:

	def $B%a%=%C%IL>(B [`(' [arg ['=' default]]...[`,' `*' arg ]`)']
	  $B<0(B..
	end

$B%a%=%C%I$rDj5A$7$^$9!%%a%=%C%IL>$H$7$F$ODL>o$N<1JL;R$NB>$K!$(B $B:FDj5A2DG=$J1i;;;R(B($BNc(B: ==, +, -$B$J$I(B)$B$b;XDj$G$-$^$9!%%a%=%C%I(B $B$ODj5A$9$kA0$K8F$S=P$9$3$H$O$G$-$^$;$s!%Nc$($P(B

	foo
	def foo
	  print "foo\n"
	end

$B$OL$Dj5A%a%=%C%I$N8F$S=P$7$GNc30$,H/@8$7$^$9!%(B

$B2>0z?t$K%G%U%)%k%H<0$,M?$($i$l$?>l9g!$%a%=%C%I8F$S=P$7;~$Kl9g$K$O%G%U%)%k%H<0$rI>2A$7$?7k2L$G=i(B $B4|2=$5$l$^$9(B($B%G%U%)%k%H<0$NI>2A$O8F$S=P$7;~$K9T$o$l$^$9(B)$B!%:G(B $B8e$N2>0z?t$ND>A0$K(B*$B$,$"$k>l9g$K$O;D$j$N

$B$^$?:G8e$N2>0z?t$ND>A0$K(B&$B$,$"$k$H$3$N%a%=%C(B $B%I$KM?$($i$l$F$$$k%V%m%C%/$,*$B$H(B&$B$,F1;~$K;X(B $BDj$5$l$k>l9g$K$O(B&$B$,8e$m$KMh$^$9!%(B

$B%a%=%C%IDj5A$O%M%9%H$G$-$^$;$s!%(B

$B%a%=%C%I$NLa$jCM$O(Breturn$B$G(B $BM?$($?CM$+!$$^$?$OK\BN$N:G8e$GI>2A$7$?<0$NCM$G$9!%(B

$B%a%=%C%I$K$O8F$S=P$7@)8B$r2C$($k$3$H$,$G$-!$@)8B$r2C$($i$l$?(B $B%a%=%C%I$O!$4X?t7A<0$G$7$+8F$S=P$;$^$;$s(B(private$B%a%=%C%I(B)$B!%(B

$B%a%=%C%I$rDj5A$9$k>l9g!$%/%i%9Dj5A$N30$K$"$k(Bdef$B<0$O%G%U%)%k(B $B%H$G$O(Bprivate$B%a%=%C%I$rDj5A$7!$%/%i%9Dj5A$NCf$K$"$k(Bdef$B<0$O(B public$B%a%=%C%I$rDj5A$7$^$9!%$3$l$O%G%U%)%k%H$G$"$C$F!$(B Module$B%/%i%9(B $B$GDj5A$5$l$F$$$k(B public, private$B$rMQ$$(B $B$FJQ99$G$-$^$9!%(B

$B$^$?!$(Binitialize$B$H$$$&L>A0$N%a%=%C%I$O>o$K(B private$B$H$7$FDj5A$5$l$^$9!%(B

$BFC0[%a%=%C%IDj5A(B

$BNc(B:

	def foo.test
	  print "this is foo\n"
	end

$BJ8K!(B:

	def $B<0(B `.' $B<1JL;R(B [`(' [$B0z?t(B [`=' default]]...[`,' `*' $B0z?t(B ]`)']
	  $B<0(B..
	end

$BFC0[%a%=%C%I$H$O$"$kFCDj$N%*%V%8%'%/%H$K8GM-$N%a%=%C%I$G$9!%(B $BFC0[%a%=%C%I$NDj5A$O%M%9%H$G$-$^$9!%(B

$B%/%i%9$NFC0[%a%=%C%I$O$=$N%5%V%/%i%9$K$b7Q>5$5$l$^$9!%8@$$BX(B $B$($l$P%/%i%9$NFC0[%a%=%C%I$OB>$N%*%V%8%'%/%H;X8~%7%9%F%`$K$*(B $B$1$k%/%i%9%a%=%C%I$NF/$-$r$9$k$3$H$K$J$j$^$9!%(B

alias

$BNc(B:

	alias foo bar
	alias $MATCH $&

$BJ8K!(B:

	alias $B?7%a%=%C%IL>(B $B5l%a%=%C%IL>(B
	alias $B?7JQ?tL>(B $B5lJQ?tL>(B

$B%a%=%C%I$"$k$$$OBg0hJQ?t$KJLL>$r$D$1$^$9!%%a%=%C%I$NDj5AFb$G(B $BJLL>$rIU$1$k$K$O(BModule$B%/%i%9$N%a%=%C%I(B alias_method $B$rMxMQ$7$F2<$5$$!%(B

$BJLL>$rIU$1$i$l$?%a%=%C%I$O!$$=$N;~E@$G$N%a%=%C%IDj5A$r0z$-7Q(B $B$.!$85$N%a%=%C%I$,:FDj5A$5$l$F$b!$:FDj5AA0$N8E$$%a%=%C%I$HF1(B $B$8F/$-$r$7$^$9!%(B

$B@55,I=8=$NItJ,J8;zNs$KBP1~$9$kJQ?t(B $1,$2,...$B$K$OJLL>$rIU$1$k$3$H$,$G(B $B$-$^$;$s!%$^$?!$%$%s%?%W%j%?$KBP$7$F=EMW$J0UL#$N$"$kBg0hJQ?t(B $B$r:FDj5A$9$k$HF0:n$K;Y>c$rMh$9>l9g$,$"$j$^$9!%(B

undef

$BNc(B:

	undef bar

$BJ8K!(B:

	undef $B%a%=%C%IL>(B

$B%a%=%C%I$NDj5A$rC$7$^$9!%%a%=%C%I$NDj5AFb$GDj5A$rC(B $B$9$K$O(BModule$B%/%i%9$N%a%=%C%I(B undef_method $B$rMxMQ$7$F2<$5$$!%(Balias$B$K$h$kJLL>Dj5A$H(B undef$B$K$h$kDj5AC$7$K$h$C$F%/%i%9$N%$%s%?%U%'!<(B $B%9$r%9!<%Q!<%/%i%9$HFHN)$KJQ99$9$k$3$H$,$G$-$^$9!%$?$@$7!$%a(B $B%=%C%I$,(Bself$B$K%a%C%;!<%8$rAw$C$F$$$k>l9g$b$"$k$N$G!$$h$/Cm0U(B $B$7$J$$$H4{B8$N%a%=%C%I$,F0:n$7$J$/$J$k2DG=@-$,$"$j$^$9!%(B

defined?

$BNc(B:

	defined? print
	defined? File.print
	defined?(foobar)
	defined?($foobar)
	defined?(@foobar)
	defined?(Foobar)

$BJ8K!(B:

	defined? $B<0(B

$B<0$,Dj5A$5$l$F$$$J$1$l$P!$56$rJV$7$^$9!%Dj5A$5$l$F$$$l$P<0$N


$BA0(B - $B - $BL\

matz@netlab.co.jp