From: "岡 保嗣" Date: 2001-05-30T18:25:46+09:00 Subject: [ruby-list:29894] module::method() と methid() の違いは ? 岡といいます。はじめまして。 モジュールに関してわからないことがあります。 あるオブジェクトのメソッドを使いたいが、レシーバをスクリプトの すみずみまで届けるのはちょっとたいへん。かといってグローバル変数 は使いたくない。 それで以下のようなスクリプトを書きました。 パタン(B)はスクリプトのトップレベルにsend_apmsg(msg)を定義した という意味ですよね。 パタン(A)は、そのメソッドがどのモジュール内で定義されているか わかりやすくするための表記かと思っていました(今回はモジュール メソッドとして定義してないから)。 でも、パタン(A)とパタン(B)では動作が違うようです。 CntAccess::init_cnt(sock)で初期化したなら、send_apmsg() はエラーになります。 なんか自分なりの理解がまちがっているようなんですが、どこを 誤解しているのでしょうか? /OKA ----------------------------------------------------- # 制御対象を示すクラス class Control def initialize(line) @control_line = line # 制御線 end def send_msg(msg) @control_line << msg # 制御線にmsgを送る end end # send_msgをレシーバ無しで使うためのモジュール module CntAcc def init_cnt(line) @target = Control.new(line) end def send_apmsg(msg) @target.send_msg(msg) end end require 'socket' include CntAcc sock = TCPSocket.new('localhost', 11110) # 相手はいるとして # パタン(A) CntAccess::init_cnt(sock) CntAccess::send_apmsg("ujauja\n") # パタン(B) init_cnt(sock) send_apmsg("ajaaja\n")