在Sass中调用没有返回值的函数

在Sass中调用没有返回值的函数,sass,Sass,我希望能够检查两种颜色的对比度,并在对比度低于某个阈值时发出警告。这是我的密码: @function contrast-check($color1, $color2, $threshold: 4.5) { @if contrast($color1, $color2) < $threshold { @warn 'contrast #{$contrast} between #{$color1} and #{$color2} too low!'; } } @函数对比度检查($c

我希望能够检查两种颜色的对比度,并在对比度低于某个阈值时发出警告。这是我的密码:

@function contrast-check($color1, $color2, $threshold: 4.5) {
  @if contrast($color1, $color2) < $threshold {
    @warn 'contrast #{$contrast} between #{$color1} and #{$color2} too low!';
  }
}
@函数对比度检查($color1、$color2、$threshold:4.5){
@如果对比度($color1,$color2)<$threshold{
@警告“{$color1}和{$color2}之间的对比度{$CONSTRATE}太低!”;
}
}
问题是我不能从任何地方调用这个函数。以下是我尝试过的:

  • 对比度检查(#fff,#000)-错误:“…”后的CSS无效:应为1个选择器或at规则,为“rast check(#fff…”
  • $:对比度检查(#fff,#000);
    -错误:函数对比度检查未返回值
  • *{test:对比度检查(#fff,#000)}
    -错误:函数对比度检查未返回值
我可以将该函数转换为一个混合函数。然后可以按预期调用它。但不能从其他函数使用混合函数

另一种选择是返回任意值。这会起作用,但也会非常麻烦,因为每次调用函数时都必须将该值赋给一次性变量


有什么好方法可以做到这一点吗?

不幸的是,这是不可能做到的,在项目的Git问题页面上对此进行了讨论

你可以从函数中返回null,但似乎SASS的创建者不希望你做这种事情,所以最好的办法就是使用mixin,即使你没有混合任何东西。我知道这在语义上是错误的,但是


正是这个问题让我意识到SASS不能胜任我需要做的工作,我现在正在编写一个POSTSS插件来完成这项工作。我不知道这条路线是否会给你带来里程。

null
作为任意值返回可能是一个不错的选择,因为任何值为
null的属性de>将在输出中被跳过。错误会准确地告诉您必须做什么。此时您只是在征求意见(而征求意见是离题的).Cimmanon。我很确定他能够理解错误消息,但不想使用返回值,因为没有返回值。他在问是否有更好的方法来执行此操作,这是一个常见问题,在SASS Github问题页面上已经讨论过,因此这是一个非常有效和有用的问题。停止拖动SASS标记。我如果你没有任何有用的贡献…谢谢你的链接!我认为没有返回值的函数不是常见情况的论点是有效的。