【发布时间】:2016-03-07 13:58:47
【问题描述】:
假设我有一个需要特征实例的函数:
trait MyTrait[T] {
def f1: T
def f2(t: T): Unit
}
def foo[T](t: MyTrait[T]) { ... }
现在,无论我在哪里调用这个函数,我都需要使用以下语法:
val x = foo[String](new MyTrait[String] {
def f1 = "Hello"
def f2(str: String) = { ... }
}
我想知道是否有另一种方法可以让我的用法更简单、更美观?理想情况下,我希望有以下用法:
val x = foo() {
def f1 = "Hello"
def f2(str: String) = { ... }
}
【问题讨论】:
-
另外注意,调用时不需要指定
foo[T]的类型参数,因为这会从你传入的MyTrait实例的类型参数推断出来.
标签: scala anonymous-class traits