Wen*_* Du 9 css sass sass-loader sass-maps dart-sass
map.set
sass文档给出的示例不起作用,为什么呢?
@use "sass:map";\n\n$font-weights: (\n \'regular\': 400,\n \'medium\': 500,\n \'bold\': 700\n);\n\nmap.set($font-weights, \'extra-bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 700, "extra-bold": 900)\nmap.set($font-weights, \'bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 900)\n
Run Code Online (Sandbox Code Playgroud)\n我的sass
版本是1.32.5
.
\n整个错误消息:
@use "sass:map";\n\n$font-weights: (\n \'regular\': 400,\n \'medium\': 500,\n \'bold\': 700\n);\n\nmap.set($font-weights, \'extra-bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 700, "extra-bold": 900)\nmap.set($font-weights, \'bold\', 900);\n// ("regular": 400, "medium": 500, "bold": 900)\n
Run Code Online (Sandbox Code Playgroud)\n我希望设置地图时不会抛出错误。
\n问题1(如果您使用的是map.set
,请跳至问题2)
其实我一直在用map-set
,以为map-set
是一样的map.set
,结果不是。
在 Sass 的文档内置模块中:
\n\n\n在引入 Sass 模块系统之前,所有 Sass 函数在任何时候都是全局可用的。许多函数仍然具有全局别名(这些别名在其文档中列出)。Sass 团队不鼓励使用它们,并将最终弃用它们,但目前,它们仍然可与旧版 Sass 版本和 LibSass 兼容(尚不支持模块系统)。
\n
并且map.set
没有map-set
像map.merge
( map-merge
) 这样的全局变量。
问题2
\n另外,我认为map.set
会像 JavaScript 一样Map.prototype.set()
,通过它设置一个映射map.set(key, value)
而不将其分配给变量就可以了。在 Sass 中,我必须这样做:
@use "sass:map";\n\n$map: ();\n$map: map.set($map, key, value);\n
Run Code Online (Sandbox Code Playgroud)\n为什么@debug
对我“不起作用”
大多数情况下我在vue-cli
环境下使用 Sass。Sass 的@debug
语法“从来没有”任何视觉输出,事实证明它们实际上是输出的,我只需要向上滚动一点: