条件表达式
约 612 字大约 2 分钟
2025-04-18
条件表达式为语言提供了控制流,否则就只能是一门静态的语言,提供了包括支持条件表达式的导入(imports)、混合(mixins)、函数等等。下面的示例只是示例而已,不建议使用 😃
一、if
/ else if
/ else
if
条件语句的工作方式和大多数编程语言一样,它接受一个表达式,当表达式为true
时执行后续代码块。与 if
一起使用的还有典型的 else if
和 else
标记,作为分支条件。
下面的示例中:
使用 overload-padding
判断是否要使用 padding()
混入(mixin)来代替 padding
属性。
overload-padding = true
if overload-padding
padding(y, x)
margin y x
body
padding 5px 10px
另外一个例子:
box(x, y, margin = false)
padding y x
if margin
margin y x
body
box(5px, 10px, true)
另外一个例子 box()
:
box(x, y, margin-only = false)
if margin-only
margin y x
else
padding y x
二、unless
对于熟悉 Ruby 编程语言的用户,Stylus 提供了 unless
条件语句。它本质上是 if
的反向操作——相当于 if (!(expr))
。
在下面的示例中,如果 disable-padding-override
是 undefined
或 false
,padding
将被覆盖,显示为 margin
。但如果它是 true
,padding
将继续按预期输出 padding 5px 10px
。
disable-padding-override = true
unless disable-padding-override is defined and disable-padding-override
padding(x, y)
margin y x
body
padding 5px 10px
三、后缀条件语句
Stylus 支持后缀条件语句。这意味着 if
和 unless
可以作为运算符使用;当右侧表达式为真时,它们会对左侧操作数进行求值。
例如,我们定义 negative()
函数来进行基本类型检查。下面我们使用块状条件语句:
negative(n)
unless n is a 'unit'
error('invalid number')
if n < 0
yes
else
no
接下来,我们使用后缀条件语句来保持函数的简洁性。
negative(n)
error('invalid number') unless n is a 'unit'
return yes if n < 0
no
当然,我们还可以进一步简化。例如,我们可以写成 n < 0 ? yes : no
,或者直接使用布尔值 n < 0
。
后缀条件语句可以应用于大多数单行语句。例如:@import
、@charset
、混入(mixins),当然还有以下属性:
pad(types = margin padding, n = 5px)
padding unit(n, px) if padding in types
margin unit(n, px) if margin in types
body
pad()
body
pad(margin)
body
apply-mixins = true
pad(padding, 10) if apply-mixins
编译为:
body {
padding: 5px;
margin: 5px;
}
body {
margin: 5px;
}
body {
padding: 10px;
}
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于