[ruby-list:48432] を読みました。
*を仮引数につけて配列をバラスのであれば、以下のように逆になるのでは。
-----------------------------------------
すなわち、
   File.join( document_root, req.path.split( '/' ) )
は
   ( [ document_root ] + req.path.split( '/' ) ).join( File::SEPARATOR ) # (1)
と同じであり、また
   File.join( document_root, *req.path.split( '/' ) )
は
   [ document_root, req.path.split( '/' ) ].join( File::SEPARATOR ) # (2)




(2011/10/03 21:48), Y. Nobuoka wrote:
> 牛坂さん
>
>> 配列要素はreq.pathで持ってきて分割しているので、*はつ けなくてもよい
>> というこですね。
> 配列要素を req.path で持ってきて分割しているから * を付けなくても良い、と
> いうとちょっと違うように思います。
> きしもとさんが、[ruby-list:48432] において実引数の変数名の前に * を付ける
> 意味を解説されていますので、今回の場合に * を付けても付けなくても
> 良い理由を以下に述べておきます。
>
> 今回使用している File#join メソッドですが、[1] をみるとわかるように
>    item.join( File::SEPARATOR )
> と同じ動きをするようです。 (item は仮引数として受け取ったパラメータの配列)
> すなわち、
>    File.join( document_root, *req.path.split( '/' ) )
> 
>    ( [ document_root ] + req.path.split( '/' ) ).join( File::SEPARATOR ) # (1)
> と同じであり、また
>    File.join( document_root, req.path.split( '/' ) )
> 
>    [ document_root, req.path.split( '/' ) ].join( File::SEPARATOR ) # (2)
> と同じ動きになります。
> そして、Array#join メソッドは 『要素がまた配列であれば再帰的に (同じ sep を利用して)
> join した文字列を連結』 する [2] ものなので、(1) の式も (2) の式も結果としては
> 同じ文字列を返します。
> よって今回の場合は * があってもなくても同じ動きになります。
> 一般的なメソッドの場合は、* の有る無しに意味がありますのでご注意ください。
>
> [1] http://doc.okkez.net/static/192/class/File.html
> [2] http://www.ruby-lang.org/ja/old-man/html/Array.html#join
>


-- 



               //////☆
               ////★
               //☆   牛坂 博則
               ★