[#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:44485] Re: ファイル出力時のprintについて

From: KIMURA Koichi <kimura.koichi@...>
Date: 2008-01-16 06:51:56 UTC
List: ruby-list #44485
木村です。

On Wed, 16 Jan 2008 13:17:36 +0900
m-hatake@jaist.ac.jp wrote:

> が、やっぱり黒田さんも疑問に思っているように、
> 
> 普通のprint
> (この通常の組み込み関数としてのprintが何のメソッドになっているかは
> 実は良く知らないのですが)

Kernel モジュールですね。

puts Kernel.methods.sort 

とかで確認してみてください。
#別にsortはしないでもいいですが

あと

Rubyリファレンスマニュアル - 組み込み関数
http://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4

に

Ruby には厳密な意味では関数はありませんが、Kernel モジュールで定義されている
メソッドは (どこからでも関数形式で呼び出せるので) 他言語における関数のよ
うに使えます。これらのメソッドを再定義する場合は他の場所への影響を考えて
行なう必要があります。

と説明があります。

> と何か具体的なオブジェクトのメソッドとしてのprintとで
> 次にくる()を、式のカッコとして期待するのか、
> メソッドの引数のカッコとして期待するのか、
> というのが統一されていない、というのは
> あまりよろしくない気がするのですがどうでしょう?

構文定義のソース(parse.y)を見てみましたが、
どうも簡単に行くものでもないようです。

いろいろやってて気がついたのですが、

 open("test.dat","w") do |out|
    print (rand * 100).truncate,"\n"
 end

だとエラーになりますが、

open("test.dat","w") do 
  print (rand * 100).truncate,"\n"
end

だとエラーになりません。
#意味のない比較ですが

parse.y の

do_block	: kDO_BLOCK
		    {
		        $<vars>$ = dyna_push();
			$<num>1 = ruby_sourceline;
		    }
		  opt_block_var {$<vars>$ = ruby_dyna_vars;}
		  compstmt
		  kEND
		    {
			$$ = NEW_ITER($3, 0, dyna_init($5, $<vars>4));
			nd_set_line($$, $<num>1);
			dyna_pop($<vars>2);
		    }
		;

この辺で呼び出している何かで変わるんだろうなあという気はしますが
よくわかりません(^^;

それでは。

-- 
木村浩一


In This Thread