Я новичок в Scala, и я хочу написать многопоточный код -с сопоставлением с образцом, и мне было интересно, могу ли я рассматривать код сопоставления с образцом -как атомарный.
Например:
abstract class MyPoint
case class OneDim(x : Int) extends MyPoint
case class TwoDim(x : Int, y : Int) extends MyPoint
var global_point : MyPoint = new OneDim(7)
spawn {
Thread.sleep(scala.util.Random.nextInt(100))
global_point = new TwoDim(3, 9)
}
Thread.sleep(scala.util.Random.nextInt(100))
match global_point {
case TwoDim(_, _) => println("Two Dim")
case OneDim(_) => println("One Dim")
}
Возможно ли, что выполнение будет проходить следующим образом:
Избегает ли Scala внутренне такое выполнение? Если да, то как? Сопоставление делает снимок объекта, а затем пытается сопоставить его с шаблонами? Существует ли ограничение на глубину снимка (, шаблоны совпадений могут быть сложными и вложенными )?