给定一个使用implicit class
语法定义的扩展方法:
package casa
object MyExtensions:
implicit class IntOps(val underlying: Int):
def twice: Int = underlying * 2
implicit class StringOps(val underlying: String):
[...]
我可以显式地导入它并将其与
@main def double(): Unit = {
import casa.MyExtensions.IntOps
println(s"2 * 2 = ${2.twice}")
}
但是当我使用Scala 3的extension
语法时:
package casa
object MyExtensions:
extension (underlying: Int)
def twice: Int = underlying * 2
extension (underlying: String)
[...]
我似乎必须通配符导入扩展:
@main def double(): Unit = {
import casa.MyExtensions.*
println(s"2 * 2 = ${2.twice}")
}
是否有一种方法可以显式地只导入特定的扩展名?
1条答案
按热度按时间kkbh8khc1#
不确定这个特性出现在哪个版本,或者它是否一直存在,但是是的,你可以导入一个扩展方法
使用
import MyExtensions.*
可以导入所有这些。在Scala 3.2.1中测试。