SASS-通过map_merge传递地图会得到外观相似但不相同的地图

问题描述 投票:0回答:1

我正在尝试编写一个函数,以将某些转换动态应用于角度材料主题的预先定义的颜色映射。问题在于,以某种方式从函数中得出的结果是wrong

我已经通过调试日志打印了结果,它看起来与原始贴图完全一样,但是通过键进行比较失败,如果尝试将其提供给角形材料函数,则会导致错误。

这里是问题的简化说明-您可以看到

  • [$eenie$meenie是等效的
  • 函数的结果($miney$mo)也相等
  • 全部四个通过调试看起来都相同
  • 我需要在函数内部完成的工作是,使$eenie在通过$miney后等于map_merge

我怀疑也许是因为密钥看起来是一个数字,所以它正面临某种数据类型危机,但是我对SASS的了解不足,无法弄清情况是否正确或如何解决。我尝试使用引号,但是对于角形材质函数,这似乎不是可接受的输入,因此我需要它与$eenie完全匹配。

@function merge-things($base-palette){
  $result: ();
  @each $hue, $color in $base-palette {
      $result: map_merge($result, (#{$hue}: $color));
  }
  @return $result;
}

$eenie: (
  50: green,
  contrast: (
    50: white,
  ),
);
$meenie: (
  50: green,
  contrast: (
    50: white,
  ),
);

$miney: merge-things($eenie);
$mo: merge-things($miney);



@debug $eenie;    // DEBUG: (50: green, contrast: (50: white))
@debug $meenie;   // DEBUG: (50: green, contrast: (50: white))
@debug $miney;    // DEBUG: (50: green, contrast: (50: white))
@debug $mo;       // DEBUG: (50: green, contrast: (50: white))
@debug 'eenie-meenie #{map-keys($eenie) == map-keys($meenie)}';   // DEBUG: eenie-meenie true
@debug 'eenie-miney #{map-keys($eenie) == map-keys($miney)}';     // DEBUG: eenie-miney false
@debug 'miney-mo #{map-keys($miney) == map-keys($mo)}';           // DEBUG: miney-mo true
    

我正在尝试编写一个函数,以将某些转换动态应用于角度材料主题的预先定义的颜色映射。问题是从...

sass sass-maps angular-material-theming
1个回答
0
投票

merge-things功能在使用数字中的键进行插值时更改键的类型。

© www.soinside.com 2019 - 2024. All rights reserved.