萨斯递归混入

问题描述:

我想知道,如果在SASS被允许写一个递归混入这样的减例如:萨斯递归混入

.size($val) when ($val < 200) { 
    width: $val; 
    height: $val; 
    .size($val + 50px); 
} 

我想这样的事情,但我没有任何输出

@mixin test($val) { 
    width: $val; 
    height: $val; 
    @for $i from 1 through 5 { 
    @include test($val); 
    } 
} 
.block { 
    @include test(5); 
} 

在sass中,你可以创建递归函数,但你的例子是错误的。

看你的代码,我看到你在无限循环,因为是$ var变量没有在@for迭代器使用。你只能从1到5无限迭代。

此处的递归方法与其他语言相同,您必须使用该参数再次调用该函数,并且当此变量与0(例如)相同时,会返回一个值...其值为用于函数的最后一次调用来设置新的值......并且再次是第一步。

这里是萨斯递归函数的例子:

希望它能帮助。

问候。

与您的LESS示例不同,您的Sass mixin无法摆脱循环。

@mixin test($val) { 
    width: $val; 
    height: $val; 
    @if $val > 0 { 
    @include test($val - 1); 
    } 
} 
+0

嗯,我认为这个功能需要@return才能正常工作。你怎么看? – 2014-10-01 08:04:47

+0

这不是一个函数,它是一个混合。 '@ return'是函数的构造。 – cimmanon 2014-10-01 12:08:03