首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Traversable的结构类型

Traversable的结构类型
EN

Stack Overflow用户
提问于 2012-03-26 12:05:21
回答 1查看 157关注 0票数 4

我有这个方法:

代码语言:javascript
复制
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))

我得到了:

代码语言:javascript
复制
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)

但是当我这样做的时候:

代码语言:javascript
复制
scala> 1.toByte
res1: Byte = 1

它起作用了。

我可能遗漏了一些基本的东西,以至于我忽略了它,但是我如何才能让它工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-26 12:46:30

Int is sybtype of AnyVal,所以您需要显式声明它。

代码语言:javascript
复制
def foo(xs: Traversable[AnyVal { def toByte: Byte }]) = xs.map(_.toByte) 
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9866468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档