条件表达式

if / else 表达式评估不同的分支,取决于两个表达式是否评估为相同的值:

foo := if "2" == "2" { "Good!" } else { "1984" }

bar:
  @echo "{{foo}}"
$ just bar
Good!

也可以用于测试不相等:

foo := if "hello" != "goodbye" { "xyz" } else { "abc" }

bar:
  @echo {{foo}}
$ just bar
xyz

还支持与正则表达式进行匹配:

foo := if "hello" =~ 'hel+o' { "match" } else { "mismatch" }

bar:
  @echo {{foo}}
$ just bar
match

正则表达式由 Regex 包 提供,其语法在 docs.rs 上有对应文档。由于正则表达式通常使用反斜线转义序列,请考虑使用单引号的字符串字面值,这将使斜线不受干扰地传递给正则分析器。

条件表达式是短路的,这意味着它们只评估其中的一个分支。这可以用来确保反引号内的表达式在不应该运行的时候不会运行。

foo := if env_var("RELEASE") == "true" { `get-something-from-release-database` } else { "dummy-value" }

条件语句也可以在配方中使用:

bar foo:
  echo {{ if foo == "bar" { "hello" } else { "goodbye" } }}

注意最后的 } 后面的空格! 没有这个空格,插值将被提前结束。

多个条件语句可以被连起来:

foo := if "hello" == "goodbye" {
  "xyz"
} else if "a" == "a" {
  "abc"
} else {
  "123"
}

bar:
  @echo {{foo}}
$ just bar
abc