ども、植木です。


>>   s = "x"
>>   puts s *10
>
> 「最後の引数の直前に*がついている場合,その引数の 値が展開されて渡されま
>   す.つまり:
>
>puts(s(*10))
>
>という method 呼び出しをしようとして、"s" という method は無いとい
>うエラーになっていると推測されます。

私もそんな気はしていたのですが...

ローカル変数は、最初の代入が宣言代わりで、宣言されてないローカル変数の
参照は、引数なしのメソッド呼出しと解釈されるのですよね?

>>   s = "x"
>>   puts s *10

この場合、先に s に "x" が代入してあるので、メソッドとは区別できると
思うのですが、宣言がしてあっても最後の引数の直前に * があるとメソッド
として扱われるのでしょうか?

いずれにしても

   s = "x"

の時に

  puts "x" *10    #->OK
  puts  s  *10    #->Error

この2つの動作が違うというのは、なんとなく違和感が...
素直にスペース1つ入れとけば良いのでしょうけど(^^;

---------------------------------------
植木岳彦  E-Mail: takehiko / os.rim.or.jp