:exit
等の:
のついた識別子は何ですか
Fixnum
)です.
"exit".internとしても求められます.catch, throw, autoloadなどでは,
引数として文字列もシンボルも使えます.
symbol
のスコープでeval((:symbol).id2name)
とすると,
値が取り出せます.
a = 'This is the content of "a"'
b = eval(:a.id2name)
a.id == b.id
loop
は制御構造ですか
a +b
がエラーになりますが
a(+b)
と解析されています.+
の両側の空白をなくすか,いれるか
のどちらかにしてください.
s = "x"; puts s *10
がエラーになりますが
puts s *10
のところが,s(*10)というメソッド呼出しと解析されて
しまいます.s*10
にするか,s * 10
にしてください.
p {}
で何も表示されません
def pos= (val) print @pos,"\n"; @pos = val end
と定義しても,
pos = 1
で参照できません
=
のついたメソッドは,レシーバー形式で呼ぶ必要があります.
self.pos = 1
という形で呼んでください.
'\1'
と'\\1'
はどう違いますか
\'
と\\
だけが
解釈され,それ以外は解釈されません.
p true or true and false
はtrue
を表示するのに,
a=true if true or true and false
では,a
にtrue
が代入されません.
(p true) or true and false
と解釈されます.
and/or
は
文の構成要素として解釈され,p
の引数を結ぶ演算子としては解釈され
ません.
a=true if (true or true and false)
と解釈されています.
if
の方がand/or
より優先順位が低いこと,
or
とand
の優先順位が同じなので,
左から順に解釈されることによります.