[#3564] ruby home page moved — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#3567] Nil is a subclass of Object? — shugo@... (maeda shugo)
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#3608] We have access to Nil on ruby 1.0 — shugo@... (maeda shugo)
前田です。
[#3614] [Request] File.readlines — keiju@... (Keiju ISHITSUKA)
けいじゅ@いそうろう.日本ラショナルです.
まつもと ゆきひろです
[#3616] ftplib.rb — shugo@... (maeda shugo)
前田です。
[#3629] LaTeX ruby documents — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
[#3636] [Req] String#include? — shugo@... (maeda shugo)
前田です。
[#3638] ftplib.rb & ftpmirror — shugo@... (maeda shugo)
前田です。
[#3676] MSVC compile error — toyofuku@...
豊福@パパイヤです。
[#3689] [BUG] inspect — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルです.
[#3690] new sync.rb release — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルです.
前田です。
[#3693] ftplib.rb revision 1.4 — shugo@... (前田 修吾 / maeda shugo)
前田です。
[#3714] ruby 1.0-970819 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#3715] may i make a ruby.rpm? — Shoichi OZAWA <ozawa@...>
こんにちは 小澤@日立 です。
わたなべです.
まつもと ゆきひろです
小澤@日立 です。
[#3736] module for GNU Readline Library — shugo@... (前田 修吾 / maeda shugo)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#3738] [BUG] a[0] += 1 (ruby-1.0-970820) — WATANABE Hirofumi <watanabe@...>
わたなべです.
まつもと ゆきひろです
[#3749] regex? (ruby-1.0-970820) — jkuro@... (Jun Kuroda)
黒田です。
[#3769] link image for ruby — shugo@... (前田 修吾 / maeda shugo)
前田です。
原です。
まつもと ゆきひろです
前田です。
[#3773] PostgreSQL module is released. — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
[#3785] rbdj0821.zip, rbgw0821.zip — WATANABE Hirofumi <watanabe@...>
わたなべです.
[#3786] [Q] How to open — Shin-ichiro Hara <sinara@...>
原です
助田です
原です。
[#3812] SyslogSendmail class — takagi@... (TAKAGI Hiromitsu)
【皆で学ぼうシリーズ(1)】
[#3819] multi-dimensional array — aito@...5sun.yz.yamagata-u.ac.jp
こんにちは,あ伊藤@山形大学です.
[#3833] [Bug] Regexp.quote — shugo@... (前田 修吾 / maeda shugo)
前田です。
助田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです.
けいじゅ@日本ラショナルソフトウェアです.
[#3839] Re: SyslogSendmail class — takagi@... (TAKAGI Hiromitsu)
> そうですね.本当はこーゆーのが ruby-list の本来の形ですね.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
[#3868] call for impression — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#3869] Re: SyslogSendmail class — takagi@... (TAKAGI Hiromitsu)
> Moduleのところに書いてあるんですねえ.こういうノウハウを記述
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#3872] Re: SyslogSendmail class — takagi@... (TAKAGI Hiromitsu)
> | attr [:date, TRUE], [:time], [:process_name, TRUE]
前田です。
まつもと ゆきひろです
[#3892] manual html by lynx — Kikutani Makoto <kikutani@...>
きくたにです。
[#3901] class variable — toyofuku@...
豊福@パパイヤです。
まつもと ゆきひろです
前田です。
[#3906] document for beginner — toyofuku@...
豊福@パパイヤです。
きくたにです。
助田です
Fri, Aug 29, 1997 at 12:54:15PM +0900 において
助田です
きくたにです。
まつもと ゆきひろです
[#3933] Re: ruby constants — toyofuku@...
豊福@パパイヤです。
まつもと ゆきひろです
わたなべです.
わたなべです.
まつもと ゆきひろです
わたなべです.
> これは ANSI C でも使えます.
まつもと ゆきひろです
[#3951] Re: document for beginner — toyofuku@...
豊福@パパイヤです。
[ruby-list:3709] Re: new sync.rb release
前田です。
keiju@bc.mbn.or.jp (石塚圭樹 ) wrote:
|前田さんがいなくて淋しかったです(^^;;;
どうもです:-)
|># Synchronizer呼んでるだけですし(^^;
|
|でも, 面白いですね.
|
|SynchronizableはSynchronizerを利用して(デレゲートタイプの利用ですね)実
|現しているのに対して, 逆に, SyncはSync_mをインクルードして実現していま
|す. 結局同じことを実現するのに反対のやりかたをしています.
まさかSyncがこうなるとは思っていなかったもので(^^;
extend_objectをオーバーライドして初期化処理をしてるんですね。
このワザいただきます:-)
でもincludeした時はやはりinitializeでsyns_extendedしないといけないのか...。
これはincludeをClassで再定義しちゃうしかないのかな。
class Class
def include(*modules)
result = super
modules.each do |mixin|
if mixin.respond_to? :__extend_class
mixin.__extend_class(self)
end
end
result
end
end
module Sync_m
def Sync_m.__extend_class(klass)
klass.eval %q{
def klass.new(*args)
obj = super
begin
eval "class << obj; @sync_locked; end"
obj.extend(For_primitive_object)
rescue TypeError
obj.extend(For_general_object)
end
obj
end
}
end
module For_primitive_object
def For_primitive_object.__extend_class(klass)
klass.eval %q{
def klass.new(*args)
obj = super
obj.sync_extended
Finalizer.add(obj, For_primitive_object, :sync_finalize)
obj
end
}
end
end
module For_general_object
def For_general_object.__extend_class(klass)
klass.eval %q{
def klass.new(*args)
obj = super
obj.sync_extended
obj
end
}
end
end
end
newを再定義するとまずそうな気がしたのですが、
class Spokesperson < String
include Sync_m::For_primitive_object
def msg=(msg)
self[0..-1] = msg
end
def say
print self, "\n"
end
end
p tom = Spokesperson.new("This is message.")
t = Thread.new {
3.times {
tom.synchronize {
p tom.msg = "This is thread1."
sleep(0.3)
tom.say
}
}
}
3.times {
tom.synchronize {
p tom.msg = "This is thread2."
sleep(0.3)
tom.say
}
}
Thread.join t
なんてのも動いてしまいました。
newの引数が違うとちゃんとArgumentErrorになりますね。
--
前田 修吾