gpt4 book ai didi

scala - 可遍历的结构类型

转载 作者:行者123 更新时间:2023-12-04 22:49:46 25 4
gpt4 key购买 nike

我有这个方法:

scala> def foo(traversable: Traversable[{def toByte: Byte}]) = {
| traversable.map(_.toByte)
| }
foo: (traversable: Traversable[AnyRef{def toByte: Byte}])Traversable[Byte]

但是当我这样称呼它时:
scala> foo(List(1,2,3))
我得到:
java.lang.NoSuchMethodException
at scala.runtime.BoxesRunTime.toByte(Unknown Source)
at $anonfun$foo$1.apply(<console>:8)
at $anonfun$foo$1.apply(<console>:8)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
at scala.collection.immutable.List.map(List.scala:45)
at .foo(<console>:8)

但是当我做这样的事情时:
scala> 1.toByte
res1: Byte = 1

有用。

我可能遗漏了一些非常基本的东西,以至于我忽略了它,但是我怎样才能使它起作用呢?

最佳答案

Int is sybtype of AnyVal ,因此您需要明确声明它。

def foo(xs: Traversable[AnyVal { def toByte: Byte }]) = xs.map(_.toByte) 

关于scala - 可遍历的结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com