You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:07:24