在斯卡拉,如果我有一个名为Vector2D
的类,并且我想为其进行一些隐式转换。目前,我已将此功能置于Vector2D
:implicit def fromFloatTuple(tuple: (Float, Float)): Vector2D = new Vector2D(tuple._1, tuple._2)
通过Scala中的隐式函数调用函数
我可以成功执行以下操作val x: Vector2D = (1f, 1f)
。但是,我不能这样做:val x: Float = (1f, 1f).length()
(明显的长度是为Vector2D定义的)。为什么这不起作用,我希望它被转换成类似val x: Float = fromFloatTuple((1f, 1f)).length()
的东西,但事实并非如此。我如何在Scala中获得这种效果?
现在我想到了它,我怎样才能让这个函数也接受其他数值类型,而且没有为所有数值类型的每个组合创建一个函数(不是2D矢量的问题,而是对于4维向量不太清楚)。
虽然此链接可以回答这个问题,最好是在这里有答案的主要部件,并提供链接以供参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/16747601) – stevieb
感谢您的反馈! –
对于像((1f,1))这样的情况,这是失败的,因为它们具有不同的数字类型。解决方法虽然是声明多个泛型参数。 –