gpt4 book ai didi

css - LESS docs on guarded mixins——为什么这条规则不匹配任何mixin?

转载 作者:行者123 更新时间:2023-12-01 00:43:28 24 4
gpt4 key购买 nike

在编写 CSS 时主要使用 SASS,现在我也准备尝试使用 LESS。通读文档后,我对 guarded mixins 的上下文感到困惑:

Additionally, the keyword true is the only truthy value, making these two mixins equivalent:

.truth (@a) when (@a) { ... }
.truth (@a) when (@a = true) { ... }

Any value other than the keyword true is falsy:

.class {   
.truth(40); // Will not match any of the above definitions.
}

为什么 truth(40) 不匹配第一个 mixin? when (@a) 不会简单地声明只有在给 @a 一个值(any 值)时才匹配 mixin,本质上,如果 @a 存在?由于 40 是一个存在的值,为什么它在给定的 mixin 中找不到匹配项?

最佳答案

为了简洁...

……我想。 LESS 的程序员似乎假设如果你不想在 mixin 上有一个 guard,那么你当然根本没有放置任何 when 语句:

.truth(@a) { ... }

无论 @a 的值如何,都会调用此 mixin,但需要 @a 的值,检查也是如此默认值的“存在”。因此,通过 添加when 守卫,他们假设确实有人想要一个进一步的守卫(而不仅仅是允许任何值),等等……

.truth (@a) when (@a) { ... }

...提供了一种编写保护语句的速记方式(LESS 旨在加快编码速度)...

.truth (@a) when (@a = true) { ... }

这使得守卫的纯真/假开关的编码速度更快,并且如果它改为评估 when (@a) 对于任何值都为 true

诚然,从典型的编程观点来看,它有点不直观(没有双关语意),如果 @a 存在(如任何东西除了 falsenull0 之外,那么短语 when (@a) 的计算结果将是 。但是他们没有检查一个值的“存在”,而是检查一个显式检查一个 passed true 的值(他们唯一的就 guard 而言,“真实值(value)”)。

除了 lesscss.org 上关于他们如何编码的声明之外,我没有任何文档来支持我在这里的声明,但没有说明为什么 他们将其编码为以这种方式工作(这部分是我目前的猜测,除非我能找到关于它的讨论文档)。

关于css - LESS docs on guarded mixins——为什么这条规则不匹配任何mixin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17991112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com