Skip to content

39 Switch 返回值 ​

switch 可以在拆解枚举负载时产生返回值。

norm
enum Result {
  Success(Integer count),
  Failure(String reason)
}

String describe(Result result) {
  return switch result {
    case Success(Integer count) { break "${count} items" }
    case Failure(String reason) { break reason }
  }
}

main() {
  printLine(describe(result: Result.Success(count: 3)))
  printLine(describe(result: Result.Failure(reason: "empty")))
}

预期输出:

text
3 items
empty

每个 case 绑定匹配的负载,并用 break 后面的字符串产生结果。函数返回这个 switch 结果;作为语句使用时则不要求结果值。

动手试试:让 Success 分支在数量前加上说明文字。

详细规则:参考。

Norm 0.25