2014-02-07 10 views
1

Я нашел следующий пример на less-website. Это команды для создания тени. Мне интересно, какой из них называется первым, поскольку у них есть одно и то же имя функции. Почему у них одно и то же имя?2 функции с тем же именем

@base: #f938ab; 

.box-shadow(@style, @c) when (iscolor(@c)) { 
    -webkit-box-shadow: @style @c; 
    -moz-box-shadow: @style @c; 
    box-shadow:   @style @c; 
} 

.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) { 
    .box-shadow(@style, rgba(0, 0, 0, @alpha)); 
} 
+0

См. [Совпадение с образцом] (http://lesscss.org/features/#mixins-parametric-feature-pattern-matching) и [Mixin Guard] (http://lesscss.org/features/#mixin-guards -особенность). –

ответ

4

Меньше позволяет сделать два Примеси (они не являются действительно функции) с тем же именем (или 3, 4, 5 ...). Если оба они совпадают с указанными параметрами, они будут выполнять свои действия в порядке определения mixin.

В этом случае эти два НЕ будут вызываться одновременно из-за условного оператора when, который отфильтровывает переданные значения. Если вторым параметром является цвет, вызывается первый mixin. Если второе значение является числом, вызывается второй mixin.

В этом случае второй mixin использует первый микстиин внутри себя. Поэтому, если второй вызывается путем передачи числа, он по умолчанию указывает цвет на черный, но добавляет уровень непрозрачности на основе номера. Затем он вызывает первый mixin для вывода окончательных значений свойств с заданным черным цветом.

В целом, это позволяет гибкость и короткие сокращения для выполнения вызова mixin со вторым микшированием.

+0

большое спасибо! – user2952265

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