/ / LESS документів на охоронюваних міксинах - чому це правило не збігається з жодним міксином? - css, менше, логічна логіка

LESS-документи на захищених міксах - чому це правило не збігається з жодним міксином? - css, менше, логічна логіка

Вперше використовуючи SASS під час написання CSS, я тепер готуюся також спробувати LESS. Після прочитання документів, я плутаюся з наступним у контексті охороняються міксини:

Крім того, ключове слово true - єдине істинне значення еквівалент двох сумішей:

.truth (@a) when (@a) { ... }
.truth (@a) when (@a = true) { ... }

Будь-яке значення, окрім ключового слова true, є фальсивним:

.class {
.truth(40); // Will not match any of the above definitions.
}

Навіщо truth(40) не збігається з першим міксином? Немає when (@a) просто вкажіть, що відповідатиме змішуванню лише якщо значення (будь-який вартості) @a, по суті, якщо @a існує? І так 40 - це значення, яке існує, чому б він не знайшов відповідності в даних змішаннях?

Відповіді:

7 для відповіді № 1

Для узгодженості ...

...Я думаю. Здається, програмісти LESS вважають, що якщо ви не хочете охоронець на місін, то ви звичайно ставите немає when заяву взагалі:

.truth(@a) { ... }

Цей міксин викликається незалежно від значення @a, але робить вимагати значення для @a, і так перевіряється за замовчуванням на "існування" значення. Отже додавши a when охоронець, вони припустили, що один дійсно має намір a подальшої охорони (і не тільки щоб дозволити будь-яке значення), і так ...

.truth (@a) when (@a) { ... }

... робить для стенограма спосіб (LESS - це спроба кодування швидкості) написання заяви охоронця ...

.truth (@a) when (@a = true) { ... }

Це дозволяє швидше кодувати простий істинний / помилковий перемикач для охоронця, і, мабуть, здається, що має сенс над тим, що в іншому випадку буде надлишковим, якщо він замість цього оцінить when (@a) як true для будь-якого значення.

Це, мабуть, трохи менш інтуїтивне (не призначено каламбур) з типової точки зору програмування, де здається, що @a існує (як у, нічого, крім false, null, або 0) потім фразу when (@a) оцінюється на true. Але замість перевірки на "існування" значення, вони зробили це перевіркою явний перевірте на пройшли вартість true (їхня «правдива цінність» стосується охоронців).

Я не маю ніякої документації, щоб підкріпити свої заяви тут, крім заяв на lesscss.org про те, як вони мати його закодовано, про що нічого не говориться чому вони закодували його для роботи таким чином (ця частина - мої спекуляції в даний час, якщо я не можу відстежити документацію обговорення).