[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>
度々オブジェクト指向についての質問ですいません。
17 messages
2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について
— Yukihiro Matsumoto <matz@...>
2008/01/04
まつもと ゆきひろです
[#44453] RSS取得時<enclosure>タグでエラー? — "garyo hosu" <garyohosu@...>
garyoです。いつもお世話になっております。
5 messages
2008/01/08
[#44463] [ANN] Rails勉強会@東京 第26回のお知らせ — "MOROHASHI Kyosuke" <moronatural@...>
各位
1 message
2008/01/11
[#44464] [ANN] rcairo 1.5.1 — Kouhei Sutou <kou@...>
須藤です。
5 messages
2008/01/11
[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>
はじめまして、青木ルイスと申します、
14 messages
2008/01/12
[#44479] ファイル出力時のprintについて
— m-hatake@...
2008/01/16
畠山と申します。
[#44481] Re: ファイル出力時のprintについて
— KIMURA Koichi <kimura.koichi@...>
2008/01/16
木村です。
[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>
山崎(ゆ)です。
14 messages
2008/01/16
[#44517] www.ruby-lang.org/ja/man/ を静的HTMLに変更 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
6 messages
2008/01/20
[#44536] カタカナ→ひらがな変換 — "Hideo Konami" <konami@...>
小波です。
8 messages
2008/01/25
[ruby-list:44482] Re: ファイル出力時のprintについて
From:
KURODA Hiraku <hiraku@...>
Date:
2008-01-16 03:21:40 UTC
List:
ruby-list #44482
こんにちは。黒田ひらく と申します。
m-hatake@jaist.ac.jp さんは書きました:
> print (rand * 100).truncate,"\n"
>
> とするとエラーはでないのですが、
>
> open("test.dat","w") do |out|
> out.print (rand * 100).truncate,"\n"
> end
>
> とすると
> 2:warning: don't put space before argument parentheses
> 2:syntax error
>
> というエラーがでます。
うちの環境では次のように表示されました。
~$ ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux]
~$ ./test.rb
./test.rb:3: warning: don't put space before argument parentheses
./test.rb:3: syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.'
まずwarningですが、元の書き方だと (rand*100) が引数の中の式の為のカッコなのか、関数呼び出しのための
カッコなのか(人間が)誤認するからではないかと思います。実際
out.print (1+1)*2
と書いたときに、期待するのに多分
out.print( (1+1)*2 )
だと思うのですが、実際には
(out.print(1+1))*2
と実行されて、nil*2が出来ない旨の例外が投げられます。
今回の場合ですと、元の書き方は
out.print().truncate, "\n"
と解釈されるので、 ,"\n" の部分でsyntax errorが発生しています。
out.print rand * 100.truncate,"\n"
out.print((rand * 100).truncate,"\n")
と書けばどちらもwarningは出ません。ただし、1つ目の方はrand*(100.truncate)として実行されるので適切で
はないでしょう。
----
ところで、僕の手元の環境では
#!/usr/bin/ruby
print (rand * 100).truncate,"\n"
open("test.dat","w") do |out|
print (rand * 100).truncate,"\n"
end
と書くと、2つめのprintだけがエラーになってしまいます。
むしろ、1つ目のprintがエラーにならないのが不思議なのですが、どなたか理由をご存知の方がいらしたら教
えていただければと思います。
--
--------------------------------------------------
黒田 拓(くろだ ひらく)
hiraku@sapporo.email.ne.jp
http://www.hinet.mydns.jp/
--------------------------------------------------