Sass新手求助:map.set函数报错(期望"$"),list.nth可正常使用
问题解决:Sass map.set 报错 "expected '$'"
问题原因
错误核心是**map.set是返回新Map的纯函数,不会直接修改原变量**,必须将函数返回值赋值给变量,否则Sass解析器会因找不到变量声明的$符号判定语法不合法。另外你的代码里@for循环末尾多了一个不必要的分号。
修正后的代码
@use "sass:map"; @use "sass:list"; $fontSizes: (200, 300, 400, 500, 600, 700, 800, 900); @function createFontSizes($baseFontSize, $multiplier) { $temp: (); @for $i from 1 through length($fontSizes) { $current: list.nth($fontSizes, $i); // 关键:将map.set的返回值重新赋值给$temp $temp: map.set($temp, $current, $baseFontSize * $multiplier * $i); } @return $temp; }
额外优化建议
用@each循环简化列表遍历,代码更直观:
@use "sass:map"; $fontSizes: (200, 300, 400, 500, 600, 700, 800, 900); @function createFontSizes($baseFontSize, $multiplier) { $temp: (); @each $size in $fontSizes { $i: index($fontSizes, $size); $temp: map.set($temp, $size, $baseFontSize * $multiplier * $i); } @return $temp; }
版本验证
确保使用Dart Sass 1.23.0及以上版本,map.set是模块系统中的函数,旧版LibSass或Ruby Sass不支持该语法。
内容的提问来源于stack exchange,提问作者Lun
相关产品推荐
相关产品推荐

