Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sass 具有目标长度的列表中所有组合的Scss递归函数_Sass - Fatal编程技术网

Sass 具有目标长度的列表中所有组合的Scss递归函数

Sass 具有目标长度的列表中所有组合的Scss递归函数,sass,Sass,有谁能把这个函数变成一个递归的通用函数,这样我就可以用它来检索n大小数的组合 这是我目前拥有的,它只在$size:2 @function combinations($list, $size, $separator: comma){ $result: null; @each $item in $list { @if ($size == 1) { $result: append($result, #{$item}, $separator); } @else

有谁能把这个函数变成一个递归的通用函数,这样我就可以用它来检索
n
大小数的组合

这是我目前拥有的,它只在
$size:2

@function combinations($list, $size, $separator: comma){
  $result: null;

  @each $item in $list {

    @if ($size == 1) {

      $result: append($result, #{$item}, $separator);
    } @else {

      @each $val in $list {

        $result: join($result, #{$item}#{$val}, $separator);
      }
    }
  }

  @return $result;
}


$list: a, b, c;

test {
  val: combinations($list, 2);
}
输出大小:1

a、 b,c

输出大小:2

a、 b、c、aa、ab、ac、ba、bb、bc、ca、cb、cc


但是我需要继续使用
$size:n
n经过多次尝试和大量研究,我终于找到了解决方案

@function combinations($list, $size: length($list), $combs: (), $separator: comma){

  @if ($combs == ()) {
    $combs: $list;
  }

  @if ($size == 1) {

    @return $combs
  }

  $newCombs: null;

  @each $comb in $combs {
    @each $item in $list {
      @if not index($newCombs, $comb) {
        $newCombs: join($newCombs, #{$comb}#{$item}, $separator);
      }
    }
  }

  @return join($combs, #{combinations($list, abs($size - 1), $newCombs)});
}

$list: a, b, c;
$size: n;
组合($list,$size)
将根据
$size
输出
$list
中所有可能值组合的列表