小编kan*_*elc的帖子

为Scala地图添加值

为什么这样做:

val x = Map[Int,Int]()
val y = (1, 0)
x + y
Run Code Online (Sandbox Code Playgroud)

但不是吗?

val x = Map[Int,Int]()
x + (1, 0)
Run Code Online (Sandbox Code Playgroud)

产生的错误是:

<console>:11: error: type mismatch;
found   : Int(1)
required: (Int, ?)
          x + (1,0)
               ^
Run Code Online (Sandbox Code Playgroud)

如果我要进入(1,0)REPL,它会正确输入(Int,Int).

我应该补充说这很好用:

x + (1 -> 0)
Run Code Online (Sandbox Code Playgroud)

scala map

8
推荐指数
1
解决办法
148
查看次数

我可以在Scala值类中使用绑定的视图吗?

在处理一些Java代码时,我想找到一种方法来减少Raw Set以包含其参数化类型.

我也希望它也适用于Scala集,所以我做了以下工作

implicit class Harden[S <% mutable.Set[_]](val set: S) extends AnyVal {
    def cast[T] = set.map(_.asInstanceOf[T])
}
Run Code Online (Sandbox Code Playgroud)

这导致了我没想到的编译器错误

Error:(27, 27) field definition is not allowed in value class
  implicit class Harden[S <% mutable.Set[_]](val set: S) extends AnyVal {
Run Code Online (Sandbox Code Playgroud)

我在Scala View Bounds或Value Class文档中没有发现任何类型的限制.

为什么不允许这样做?我正在使用Scala 2.10.3.

generics scala

4
推荐指数
1
解决办法
256
查看次数

标签 统计

scala ×2

generics ×1

map ×1