まず、Ruby
class MyClass < Numericいっぽう Python では
end
obj = MyClass.new
(+obj).class # prints "MyClass"
class MyClass(float):そして MATLAB だと
pass
obj = MyClass()
type(+obj) # prints "<class 'float'>"
% class definition goes to myclass.mまだ他の言語では試してないけれど、この中だと Ruby だけ振舞が違う。サブクラス側でわざわざ overload しなくてもサブクラスのタイプにしてくれるあたり、Ruby は痒いところに手が届いている。機能拡張のため、Built-in クラスを継承して、そのサブクラスのオブジェクト間でオペレータを機能させたい時には、断然 Ruby のほうがよさそう。型互換のために、サブクラス側でわざわざ built-in クラスのオペレータを overload するのは手間がかかりそうだし。
classdef myclass < double
methods
function obj = myclass(x)
obj = obj@double(x)
end
end
end
obj = myclass(0)
class(uplus(obj)) % prints "double"
ところでこのあたりの振舞いを切り替えられる言語ってあるのでしょうか。
0 件のコメント:
コメントを投稿