เมื่อมีคนนำเข้าอ็อบเจ็กต์ของฉัน ฉันต้องการให้คลาสโดยนัยจากอ็อบเจ็กต์ (หรือแพ็คเกจ) อื่น ๆ พร้อมใช้งานสำหรับพวกเขา การมี 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)
}
มีวิธีที่กระชับกว่านี้ไหม?