【问题标题】:Scala val concurrencyScala val 并发
【发布时间】:2015-08-31 18:53:14
【问题描述】:

如果我有这样的表达式:

block 1 {
   val x = 5
}

然后我做:

block 2 {
   val z = x + 5
   val y = x + 4
   val a = x * 2
   val b = x / 5
}

block 2 中的语句是否同时执行?

block 1 更改为lazy val x = 5 将如何影响block 2 的执行?

block 1 更改为var x = 5 会如何影响block 2 的执行?

【问题讨论】:

  • 没有。不同时 - 从上到下。

标签: scala


【解决方案1】:

块 2 中的语句是否同时执行?

没有。它们是按顺序执行的。

将块 1 更改为 lazy val x = 5 会如何影响块 2 的执行?

初始化z 需要稍长一些,因为它需要等待x 初始化。然后它会照常进行。

将块 1 更改为 var x = 5 会如何影响执行块 2?

事实上,它不会。

要让它们同时执行,您必须在不同的线程上执行,最好使用Future

【讨论】:

  • var val x 不会编译。
  • @AlexeyRomanov 嘿,我实际上并没有读过var。我的大脑假定语法正确。假设这是预期的,我将编辑错误。
  • @m-z,修复了错误。我可能复制并粘贴了,我的眼睛错过了语法。谢谢。
猜你喜欢
  • 2011-11-29
  • 2011-07-16
  • 2011-06-11
  • 2011-10-11
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多