我在用 Java 编程时发生了什么:
String str
// want to call something(), but signature does not match
something(Foo foo)
// but I have this conversion function
Foo fooFrom(String)
// Obviously I am about to create another method overload.. sigh
something(String s) {
something(fooFrom(s));
}
但后来我想到了一种“自动类型转换”的可能性,它只使用我定义的转换函数fooFrom
,每次传入一个字符串,其中一个 Foo 对象除外。
我的搜索把我带到了关于类型转换的维基百科页面,这个 Eiffel 示例:
class STRING_8
…
create
make_from_cil
…
convert
make_from_cil ({SYSTEM_STRING})
to_cil: {SYSTEM_STRING}
…
convert
如果将 STRING_8 用作 SYSTEM_STRING,则会自动调用后面的方法,反之亦然。令我惊讶的是,我找不到任何其他语言支持这一点。
所以我的问题是:还有其他语言支持这个功能吗?如果没有,是否有任何理由,因为它对我来说似乎很有用?此外,我认为将其作为语言插件实现并不难。