Ответ 1
"Да", но он не будет делать то, что вы ожидаете.
Выражение, используемое для коммутатора, оценивается один раз - в этом случае contains
оценивает значение true/false как результат (например, switch(true)
или switch(false)
)
, а не строку, которая может быть сопоставлена в случае.
Таким образом, вышеупомянутый подход не будет работать. Если этот шаблон не намного больше/расширяем, просто используйте простые инструкции if/else-if.
var loc = ..
if (loc.contains("google")) {
..
} else if (loc.contains("yahoo")) {
..
} else {
..
}
Однако учтите, была ли функция classify
, которая возвращала "google" или "yahoo" и т.д., возможно, используя условные выражения, как указано выше. Тогда он может быть использован как таковой, но в этом случае, вероятно, будет излишним.
switch (classify(loc)) {
case "google": ..
case "yahoo": ..
..
}
В приведенном выше обсуждении, например, в JavaScript, Ruby и Scala (и, возможно, другие) предоставляют механизмы для обработки более "расширенного использования".