Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala中定义特定容器类型的方法?_Scala - Fatal编程技术网

如何在Scala中定义特定容器类型的方法?

如何在Scala中定义特定容器类型的方法?,scala,Scala,我有一个val list=list[Foo],我想在这个列表上定义某些方法,但只有当它是Foo类型时,比如list.prettyDisplay 在Scala有可能吗?我正在看一本关于高级类型的教程,但我想我看不出我在找什么。您可以定义一个从List[Foo]到实现prettyDisplay的某个类的隐式转换。由于其参数的类型,此转换不适用于其他列表 class Foo implicit def betterFooList(l:List[Foo]) = new { def prettyDis

我有一个val list=list[Foo],我想在这个列表上定义某些方法,但只有当它是Foo类型时,比如list.prettyDisplay


在Scala有可能吗?我正在看一本关于高级类型的教程,但我想我看不出我在找什么。

您可以定义一个从List[Foo]到实现prettyDisplay的某个类的隐式转换。由于其参数的类型,此转换不适用于其他列表

class Foo

implicit def betterFooList(l:List[Foo]) = new {
  def prettyDisplay() = ???
}

List(new Foo).prettyDisplay()

您可以定义从List[Foo]到实现prettyDisplay的某个类的隐式转换。由于其参数的类型,此转换不适用于其他列表

class Foo

implicit def betterFooList(l:List[Foo]) = new {
  def prettyDisplay() = ???
}

List(new Foo).prettyDisplay()