2014-09-30 3 views
0

Я хотел бы знать, если в дерзости разрешено написать рекурсии подмешать как этот Less Например:Sass рекурсия Mixin

.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); 
} 

ответ

1

В сущности вы можете создавать рекурсивные функции, но ваш пример неверен.

Глядя на ваш код, я вижу, что вы находитесь в бесконечном цикле, потому что переменная $ вар не используется в @for итератора. Вы только итерации от 1 до 5 бесконечно.

Рекурсивный подход здесь совпадает с другими языками, вы должны использовать этот параметр для повторного вызова функции, и когда эта переменная совпадает с 0 (например), возвращает значение ... его значение равно используется для последнего вызова функции для установки нового значения ... и снова первого шага.

Вот примеры Sass рекурсивных функций:

Надеется, что это помогает.

С уважением.

1

В отличие от вашего примера LESS, ваш Sass mixin не имеет возможности вырваться из цикла.

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

Хммм, я думаю, что эта функция нуждается в @return, чтобы нормально работать. Как вы думаете? –

+0

Это не функция, ее смесь. '@ return' является конструкцией для функций. – cimmanon

Смежные вопросы