手写笔:有没有办法制作这个烘干机

Stylus: Is there a Way to make this DRYer

我有很多哈希值要循环。

例如,我有一个颜色哈希:

colors = {
  red: #f00f00,
  green: #78f000,
  blue: #0090f0,
}

还有一个大小散列:

fontSize = {
  small:  14px,
  base:   16px,
  large:  18px
}

然后我遍历这些散列。这是一个简化的例子:

for name, color in colors
  .{name}
    background-color: color

for name, size in fontSize
  .{name}
    font-family: size

我想知道有没有烘干机可以做这个。也就是说,我不想一遍又一遍地重写 for...in 循环(因为每个哈希的结构都相同。

有没有办法做到这一点(如果可以,怎么做)?

你可以用循环做一个函数并使用参数来获取类名并设置你需要的 属性:

手写笔

colors = {
  red: #f00f00,
  green: #78f000,
  blue: #0090f0
}

fontSize = {
  small:  14px,
  base:   16px,
  large:  18px
}

loop(hashname, prop)
  for class, value in hashname
    .{class}
      {prop}: value


loop(colors, background-color)

loop(fontSize, font-size)

输出

.red {
  background-color: #f00f00;
}
.green {
  background-color: #78f000;
}
.blue {
  background-color: #0090f0;
}
.small {
  font-size: 14px;
}
.base {
  font-size: 16px;
}
.large {
  font-size: 18px;
}