当有人导入我的对象时,我希望其他对象(或包)中的一些隐式类可供他们使用。在对象中使用import
没有帮助,因为导入不是传递导入的,因此我假设我必须使用一些implicit
def
或val
,但是我无法找到一些合理的方法如何实现这一点,只有一个相当冗长的def
:
object Main extends App {
object A {
implicit class ExtendedMath(val x: Double) extends AnyVal {
def square = x * x
}
}
object X {
import A._
// what to write here, so that ExtendedMath is forwarded to our users?
// following works, but it seems quite verbose
implicit def extendedMath(x: Double): ExtendedMath = ExtendedMath(x)
}
import X._
val a = 0.0
println(a.square)
}
有更简洁的方法吗?
答案 0 :(得分:2)
正如@stew建议的那样,典型的方法是定义特征中的含义,然后可以多次混合。唯一需要注意的是,在特征中不允许使用值类,因此您必须使用分离值类和隐式转换:
#define GL_GLEXT_PROTOTYPES
#include <GLES2/gl2ext.h>