Chiba Logo CHIBA v0.6.13
CHIBA blog RSS feed
CHIBA / DOCS / LEVEL-1 SPEC

`if else if let`

这里集中展示 CHIBA level-1 specification,覆盖 core language、control flow、memory、patterns、IR lowering 与 package system 等实现边界。

The docs surface keeps CHIBA level-1 specification pages browsable inside the site, with direct paths into language, control flow, memory, pattern, and lowering rules.

if else if let

语法

else if 分支允许直接引入 if let 形式。

语义

这允许在条件链中混合布尔条件与 pattern-based 条件。

else if 分支使用 if let 时,也继承 if let 的 DFT pattern 与 at pattern 能力。

例如:

if cond {
	...
} else if let whole @ Foo(x) = expr {
	...
} else {
	...
}

这里 whole @ Foo(x) 的语义与普通 if let 中完全一致。

由于 if let 自身要求显式 else,因此条件链中的 else if let 也必须继续通向后续 else if ... 或最终 else { ... },不能在成功分支外悬空结束。

Usage

if cond {
	use_a()
} else if let whole @ Foo(x) = expr {
	use_pair(whole, x)
} else {
	use_b()
}

注释:这个例子展示布尔条件和 pattern 条件可以出现在同一条条件链里,而 whole @ Foo(x) 的绑定只在命中的分支内可见。

边界

需要单独明确:

  • if let 分支绑定的作用域
  • 与普通 else if 的优先级和语义是否完全一致
  • at pattern 绑定在条件链中的作用域边界