条件表达式
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