Как определить переменную в sass if / else заявлениях? Это возможно? [Дубликат]

Ответ довольно прост. Основные алгоритмы обучения являются жадными по своей природе - они не находят глобального оптимального, а скорее - «ближайшего» локального решения. В результате, начиная с любой фиксированной инициализации, вы отклоняете свое решение по отношению к определенному набору весов. Если вы делаете это случайным образом (и, возможно, много раз), гораздо менее вероятно, что вы застрянете в какой-то странной части поверхности ошибки.

Тот же аргумент применяется к другим алгоритмам, которые не способны найти глобальный оптимум (k-mean, EM и т. д.) и не относится к глобальным методам оптимизации (например, SMO-алгоритму для SVM).

16
задан Afterlame 12 March 2013 в 22:20
поделиться

2 ответа

Это вполне ожидаемо. Переменные имеют область . Если вы определяете их внутри блока управления (например, оператор if), то они не будут доступны снаружи. Итак, что вам нужно сделать, это инициализировать его снаружи так:

$text-color: null;
$background-color: null;
@if $colorscheme == white {
    $text-color: #333;
    $background-color: #fff;
}
@else {
    $text-color: #ccc;
    $background-color: #333;
}

Или ...

$text-color: #ccc;
$background-color: #333;
@if $colorscheme == white {
    $text-color: #333;
    $background-color: #fff;
}

Хотя было бы менее подробным использовать if() выполните следующие действия:

$text-color: if($colorscheme == white, #333, #ccc);
$background-color: if($colorscheme == white, #fff, #333);
29
ответ дан Mark Amery 28 August 2018 в 03:16
поделиться

Хотя этот пример еще является more verbose, он устраняет необходимость устанавливать две пустые переменные:

@if $colorscheme == white {
  $text-color: #333 !global;
  $background-color: #fff !global;
} @else {
  $text-color: #ccc !global;
  $background-color: #333 !global;
}

. Второй и третий примеры cimmanon намного лучше.

5
ответ дан graygilmore 28 August 2018 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: