小编Won*_*ark的帖子

Scala值类,用例

我知道value class在scala内联编译时的操作.

也许是这样的

case class A(i: Int) extends AnyVal {
   def +(that: A) = A(this.i + that.i)
} 
A(1) + A(2) // After compile it equals to 1 + 2 
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎没什么大不了的.

它可能会提高性能,但是,

打电话this.i + that.i似乎没有那么慢i + i

为什么我们需要value classscala和任何用例???

scala value-class

7
推荐指数
2
解决办法
1854
查看次数

为什么我们需要未来和承诺?

据我所知,它Future是只读的,Promise是一次写入数据结构.

我们需要一个Promise完成一个Future

例如,

object Lie extends Throwable

val lie = Future { throw Lie } 

val guess = Promise[String]()     

lie.onComplete { case Success(s) => guess.success("I knew it was true!") 
                 case Failure(t) => guess.failure("I knew it was lie")} 
// return type: Unit 

guess.future.map(println) 
// res12: scala.concurrent.Future[Unit] = List()
// I knew it was lie!
// Requires Promise to chain Future with exception 
Run Code Online (Sandbox Code Playgroud)


但是,我无法理解为什么我们需要同时拥有FuturePromise

我猜Promise是因为Future.onComplete签名所必需的

由于Future.onComplete返回类型是 …

jvm scala future promise

4
推荐指数
2
解决办法
1218
查看次数

Scala将对象转换为另一种类型

我想让下面的代码不会抛出任何错误

case class A(value: String)
val a = A("I hope to be string one day") 
val value = a.asInstanceOf[String] // java.lang.ClassCastException: A cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)

我想修改A类以下工作

val value = a.asInstanceOf[String] // I hope to be string one day
Run Code Online (Sandbox Code Playgroud)

有人知道解决方案吗?

casting scala

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

标签 统计

scala ×3

casting ×1

future ×1

jvm ×1

promise ×1

value-class ×1