[#41449] slim ruby for embedding — Hiroshi Takagi <gollum@...>
たかぎです。
[#41455] オブジェクト同士の演算などを実装するには? — Hideo Konami <konami@...>
小波です.
From: Hideo Konami <konami@kyoto-wu.ac.jp>
小波です.
いわおかです。
小波です.
原です。
いわおかです。
なかだです。
[#41489] Matrixの継承について — argento@...
はじめまして。吉田と申します。
まつもと ゆきひろです
るびきち様、まつもと様
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
原です。
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
原です。
[#41503] 数を減らしてくループ — Takeshi Horinouchi <horinout@...>
堀之内と申します。
From: Takeshi Horinouchi <horinout@kurasc.kyoto-u.ac.jp>
堀之内です。
From: Takeshi Horinouchi <horinout@kurasc.kyoto-u.ac.jp>
こんにちは。ゴトウと申します。
[#41543] カスタム版Rubyの作成 — rubikitch <rubikitch@...>
るびきちです。
[#41552] Re: Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — 岩崎 弘孝 <IH000667@...>
岩崎です。
[#41554] Re: Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — 岩崎 弘孝 <IH000667@...>
岩崎です。
[#41561] Re: Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — 岩崎 弘孝 <IH000667@...>
岩崎です。
[#41570] 別クラスのメソッドを横取り — 石井 大海 <banzaida@...>
お久しぶりで、konnです。
[#41596] 名前空間の衝突を回避する方法 — Kentaro KAWAMOTO <kentaro.kawamoto@...>
川本と申します。
From: Kentaro KAWAMOTO <kentaro.kawamoto@gmail.com>
[#41602] エクセルファイルを読み込む際の問題(質問) — "Hisashi Yahata" <yahatah@...>
質問で恐縮ですが、ご教示ください。
conundrumと申します。
babieさん、conundrumさん、早速の回答を有り難うございました。
conundrumです。
[#41624] MacOS X Aqua 対応のための tcltklib の extconf.rb — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
永井@知能.九工大です.
天野竜太郎と申します。
永井@知能.九工大です.
8.4.10のtcl.hやtk.hは、
永井@知能.九工大です.
> Tcl/TkAqua もこの Macintosh のルールに従うのであれば
永井@知能.九工大です.
永井@知能.九工大です.
天野です。
永井@知能.九工大です.
永井@知能.九工大です.
完全に私の勘違いです。
永井@知能.九工大です.
ruby-list:41651の
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
>> 13,画像を見るための簡単なユーザーインターフェイス
永井@知能.九工大です.
[ruby-list:41471] Re: オブジェクト同士の演算などを実装するには?
お世話になっております。 A.中村です。
On Thu, 3 Nov 2005 13:56:13 +0900
IWAOKA Masahiro様 iwaoka@tuat.jac-net.com wrote:
> オブジェクトを主体として考えるならば、第三者(Cat)によって戦わさ
> れてる(上の例)というよりは、"mike" が "tama" と戦う(例えば
> mike.fight(tama))の方が自然だと思います。baby の例も同様。
mike.fight_with(tama)
#「hogehogeと戦う」が英語ではFight WITH hogehogeだったかどうかは
#自信が無いですが…
というメソッドは存在していいと想いますが、
それとは別問題として、
「両者を対等に捉えたい」っていう要望もまた
アリだとは想います。
主体といっても、現実は、
これが主体だ!と言い切れるケースばかりじゃないので、
ちょっと微妙なんですよねー。
なんか世間にはMultipleDispatchとかいって
複数のオブジェクトの「組み合わせ」に対して
メソッドを呼ぶ(メッセージを送信する)ということが
できる言語もあるらしいです。
#Lisp系とかで見かけるらしいですが、
#かくいう俺も触ったことはまだ無いので伝聞です…
そういう言語だと、
対等に捉えたfightも自然に記述できるんでしょうね。
が、まあ今主流の言語にはその機能は無いようです。
MultipleDispatchなやり方だと、もしかすると、
闘技場とか、戦う動機とか、戦う種目とか、もまた
組み合わせるオブジェクトたちの1つとして参加する
のかなあ…
さてRuby。
個人的には、ArrayとかEnumerableに
ちょいとfightメソッドをつけちゃうといいかな
という気がしています。
Arrayに恒久的につけるのは不味いでしょうけど、
まあ1つのプログラムの中の話ですし、
かたいこと言わずに(^^;
…てゆーか、Enumerableと同じ立場の
(つまりeachとかを持つクラスにincludeしてもらうような)
moduleを1つ作ればいいんですかね。
#EnumerableとかArrayとかにmix-inしてくださーい
module Fighters
#要素がfight_with(敵)を受け付けることを期待してまーす
def fight
self.each{|me|
(self.to_a - [me]).each{|enemy|
me.fight_with(enemy)
}
}
end
end
module Fighter
def initialize(name)
@name=name
end
attr :name
def fight_with(you)
puts "#{self.name}曰く「#{you.name}よ、俺はお前を倒す!!」"
#相手次第で戦い方を替える、というコードが何もありませんが…(^^;
#あと動機や種目の概念も無いなあ。うーん…
end
end
class Cat; include Fighter; end
class Dog; include Fighter; end
[
Cat.new("mike"),
Cat.new("tama"),
Dog.new("pochi"),
].extend(Fighters).fight
sh-2.04 % ruby -v fighters.rb
ruby 1.8.2 (2005-02-01) [i386-mswin32]
mike曰く「tamaよ、俺はお前を倒す!!」
mike曰く「pochiよ、俺はお前を倒す!!」
tama曰く「mikeよ、俺はお前を倒す!!」
tama曰く「pochiよ、俺はお前を倒す!!」
pochi曰く「mikeよ、俺はお前を倒す!!」
pochi曰く「tamaよ、俺はお前を倒す!!」
まあようするに
「不細工」な部分はライブラリ(?)の中に隠しちゃえ
という話です。
あと、extendでヤリ逃げするってのは結構好きかも。
module自体はライブラリとして作り置きできるんで
クラスじゃなくインスタンスに対してちょっかい出しても
全体としてはあまり汚くならない(きがする)し。