From: EGUCHI Osamu Date: 1997-10-08T19:04:46+09:00 Subject: [ruby-dev:705] Re: Here document (Re: ruby1.1) えぐち です。 ---------- > 差出人 : Yukihiro Matsumoto > 件名 : [ruby-dev:704] Re: Here document (Re: ruby1.1) > > まつもと ゆきひろです > > In message "[ruby-dev:702] Here document (Re: ruby1.1)" > on 97/10/08, "EGUCHI Osamu" writes: > > |えぐち です。 > |a = < |abcdef .. xyz. > |EOF > | > |の様な使い方は、現在は出来ないようですね。 > > できますよ.here documentはevalの中で使えない(だからeval.rb > やrbc.rbでも使えない)という制限はありますが. > |a << "ABC" > |が左シフトか Here document の開始かはまったく曖昧で > |現在は左シフトの様です。 > > これは曖昧ではないのです.<<のルールは > > * 式が始まる部分で > * <<の後ろに空白がない > > 場合です.ですから, > > a << "ABC" > > は左シフトですが, > > a <<"ABC" > > はhere documentです.若干ややこしいですが,perlでもこんなも > んです. > なるほど、無意識に空白を入れていました。 そういえば、 class ABC .... def member = (n) ... end end で parse error となり悩んだことを、ころっと忘れていました。 ruby は、空白をやたら入れない、、、というか空白自身に 意味のある言語だということを改めて認識しました。 > |「文字列が使える文脈の全てで、here documentが使えると便利」 > > 多分(見落としが無ければ)「文法的に正当に文字列が使える文脈」 > では全部here documentが使えると思います. > > | << のかわりに <<< をつかう > | > |のはどうでしょうか? > > shellと違っちゃうのでちょっと避けたいですねえ. 予想通りのお言葉です (**; > In message "[ruby-dev:703] Re: Here document (Re: ruby1.1)" > on 97/10/08, WATANABE Hirofumi writes: > |それは a が数値か配列か文字列かで違うし, here document の場 > |合だと a <<"ABC" のように間を空けないってルールになってます, > |いまのところ(たぶん). > > そうです. > > |STDOUT << <<"<<" << (1 << 2) << "\n" > |1 << 2 = > |<< > | > |こんなのもちゃんと動いてるし, いいんじゃないかな? > > ううう,Obfuscated Ruby Code Context行かな? <<"<<" は2行下の << で閉じるってことなんですね。 、、ぅぅうん、、ってことは、今までの << と 文字列を 空白置かずにかいてたコードって、、 ぁあ、 unterminated string meets end of file だ、、@_@ えぐち