[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>

度々オブジェクト指向についての質問ですいません。

17 messages 2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について — Yukihiro Matsumoto <matz@...> 2008/01/04

まつもと ゆきひろです

[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>

はじめまして、青木ルイスと申します、

14 messages 2008/01/12
[#44479] ファイル出力時のprintについて — m-hatake@... 2008/01/16

畠山と申します。

[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>

山崎(ゆ)です。

14 messages 2008/01/16

[ruby-list:44499] Re: モジュールのメソッドを呼び出し時の引数について

From: KURODA Hiraku <hiraku@...>
Date: 2008-01-17 00:59:08 UTC
List: ruby-list #44499
黒田ひらくです。

m-hatake@jaist.ac.jp さんは書きました:
> test 100, "\n"		# => OK
> test (100), "\n"	# => OK
> MMM.test 100, "\n"	# => OK
> MMM.test (100), "\n"	# => NG


畠山さんの書かれた例を見て気がついたのですが、この現象はメソッドの呼び出
しが「関数形式」かどうかで分かれているような気がしてきました。

-----
 #!/usr/bin/ruby

 class C
    def f(*arg)
       puts *arg
       100
    end
    def self.f(*arg)
       puts *arg
    end
    f (100), "\n"          # => OK
    self.f (100), "\n"     # => NG

    def exe
       f (100), "\n"       # => OK
       puts (100), "\n"    # => OK
       puts f (100), "\n"  # => NG
       self.f (100), "\n"  # => NG
       C.f (100), "\n"     # => NG
       c = C.new
       c.f (100), "\n"     # => NG
    end
 end
-----
同様の式をirbで行ごとに実行して、関数形式とそうでない形式で比べると、
 f (100), "\n"  # => f((100), "\n")
 obj.f (100), "\n" # => (obj.f(100)), "\n"  (syntax error)
のように解釈されていました。

ちなみにRuby1.9で実行して見たところ、NGな箇所ではsyntax errorは出ていま
したが、warningは出ませんでした。関数形式ではOKなのは同じです。


・・・と思ったのですが、関数形式か否かの場合分けだと、[ruby-list:44482]
で書いた ブロックの中の関数呼び出しでsyntax error の説明がつきません(汗
しかも、メソッドの中だと同じ書き方でもerrorにはならないし。

# もしかして、原因が2種類あるとか?

-- 
--------------------------------------------------
 黒田 拓(くろだ ひらく)
    hiraku@sapporo.email.ne.jp
    http://www.hinet.mydns.jp/
--------------------------------------------------

In This Thread