我试图使用scala匹配表达式作为开关语句。我没有将case值存储在数组中,并希望在运行时生成它。
while (completedTasks < todoTasks) {
// Submit if machine 0 is ready.
if (status(0) == READY)
submit(0, 1)
// Submit if machine 0 is failed.
if (status(0) == FAILED)
submit(0, 1)
}
如何将上面的代码转换为匹配表达式?我正在尝试复制一个云服务器并运行多个线程以避免通信开销。假设有10台机器。
可以在ADT结构上使用模式匹配。
你可以这样做:
sealed trait Status
case object Ready extends Status
case object Failed extends Status
//Some logic to output READY or FALSE here.
// For example purposes we always return READY.
def status(value: Int): Status = Ready
status(0) match {
case Ready => "I'm ready"
case Failed => "I'm failed"
}
你可以在这里的操场上试试这个例子。