我正在开发一个使用大量 Sass 来创建可维护且易于使用的代码库的 HTML 样板。其中一部分是一些功能:
// Returns the scale value found at $key.
@function get-type-scale($key) {
$value: map-get($type-scale, $key);
@if $value != null {
@return $value;
}
@else {
@warn "Unfortunately, `#{$key}` is not defined in the `$type-scale` map.";
}
}
// Returns the line-height value found at $key.
@function get-line-height($key) {
$value: map-get($line-heights, $key);
@if $value != null {
@return $value;
}
@else {
@warn "Unfortunately, `#{$key}` is not defined in the `$line-heights` map.";
}
}
// etc... I have 2 more functions like this where only the $map changes.
然后这些函数在一些 mixin 中被调用,如下所示:
// Sets font-size and line-height based on the $level.
@mixin set-type($level: 0) {
font-size: get-type-scale($level);
line-height: get-line-height($level);
}
虽然这工作得很好,但我不喜欢我在函数中重复大量代码的事实。我尝试编写一个接收地图名称作为参数的通用函数,但我不能在 map-get() 中使用插值。
有没有办法让函数代码更加优雅和尽可能 DRY?
我很欣赏任何见解。干杯!