| 著作一覧 |
現在、VS6でビルドしてMSVCRT6と一緒にASRを作成しているけど、次からはVS2005でビルドすることにします。
除外ライセンスについての規定が
再頒布可能コードのソースコードを改変または再頒布すること
と明示的に限定されているからです。ASRのソースコードにはATLを継承したものは含まれていますが、それは「ソースコード形式で改変し」とは異なることは明らかです。
と、一応、書いておく。
の使い#ライセンスを読むとバイナリー(msvcrtをスタティックリンクしたものを含む)をWINEなどのWindowsプラットフォーム以外のプラットフォームでの実行を目的としての配布はできない(やらないけど)。
#でも、メインマシンには当分インストールできそうにない。どうしようかな。
#実際にはMSのライセンスには抵触していなくてもGPL2には抵触している(少なくても付随条項の追加が必要であるが無視している)ということは一応書いておく。というか、付随条項を入れれば良いのか。
迷彩記憶を開いて何か間違えたかなとすぐ閉じてしまって後でまだ読んでないことに気付いて開きなおしたり。使ってる人を見ないのでなんとなく自分専用のような意識になってたようだ。
#!/usr/bin/env ruby -Ks
class Calculator
def initialize()
change_behavior(?+)
end
def change_behavior(o)
if o == ?+
def calc(x,y)
x + y
end
elsif o == ?-
def calc(x,y)
x - y
end
end
end
end
c = Calculator.new
p c.calc(1, 5)
c.change_behavior(?-)
p c.calc(1, 5)
c.change_behavior(?+)
p c.calc(1, 5)
動かすと
C:\tmp>ruby calc.rb 6 -4 6
こうやるとインスタンスではなくクラスの振る舞いに影響するのか。
c.change_behavior(?-) p c.calc(1, 5) c2 = Calculator.new p c.calc(1, 5)とすると、c2のためにinitialize()が走り、cのcalcが元の動作に戻る。
defを呼ぶのが先か、メソッドを呼ぶのが先か、微妙な処理順によってうまく動いたりmethod_missingになったり。もちろんmethod_missingになったらゲームオーバー。(defするスレッドと呼び出すスレッドのレースゲーム)
ジェズイットを見習え |