【发布时间】:2010-12-15 08:46:22
【问题描述】:
说,出于审美原因,我希望能够写作:
3 / 4
并且让/成为一个类的方法,该类存在从 Int 到的隐式转换,例如:
class Foo(val i: Int) {
def /(that: Int) = // something
}
implicit def intToFoo(i: Int) = new Foo(i)
这是否可能,即是否可以“禁用” Int 上的 / 方法?
【问题讨论】:
-
没有足够的 Scala 专家来告诉你是否可以这样做,但我可以告诉你不应该这样做。除非您尝试构建“Scala Puzzlers”之类的东西,否则您只是以极低的折扣购买了很多麻烦。
-
为了提供一些上下文,我想做的是编写一个 URL 匹配器,您可以在其中指定 URL 模式,例如“foo/bar”/34/“一些/东西”。显然我可以你\或其他任何东西,但“foo/bar”\34\“some/thing”看起来有点奇怪。我认为在这种情况下,任何代码读者都应该非常清楚 / 的用法。
-
请注意,在您的评论示例中,隐式转换是 String 到 Foo,而不是 Int
-
两者。 (即某些并行类。)请注意,为简洁起见,已对问题中给出的示例进行了简化,并且并未完全实现评论中概述的应用程序。 :)
标签: scala