Сопоставление с образцом идентичные значения

Я бы предложил использовать следующую комбинацию строк, чтобы проверить, используется ли тип устройства.

Согласно документации Mozilla рекомендуется строка Mobi. Но некоторые старые планшеты не возвращают true, если используется только Mobi, поэтому мы должны использовать также строку Tablet.

Аналогичным образом, для обеспечения безопасности iPad и iPhone строки также могут быть использованы для проверки типа устройства.

Большинство новых устройств будет возвращать true только для строки Mobi.

if (/Mobi|Tablet|iPad|iPhone/.test(navigator.userAgent)) {
    // do something
}

22
задан Guy Coder 5 February 2017 в 22:22
поделиться

3 ответа

Это называется нелинейным шаблоном . Не так давно в списке рассылки haskell-cafe было несколько тем по этому поводу. Вот два:

http://www.mail-archive.com/ haskell-cafe@haskell.org /msg59617.html

http://www.mail-archive.com/ haskell-cafe @ haskell .org/msg62491.html

Нижняя строка: это не невозможно реализовать, но для простоты было решено отказаться.

Кстати, вам не нужен if или case ], чтобы обойти это; (немного) более чистый способ - использовать охрану:

a `plus` b
  | a == b = 2*a
  | otherwise = a+b
40
ответ дан 29 November 2019 в 04:09
поделиться

У вас не может быть двух параметров с одинаковыми именами, чтобы указать, что они должны быть равны, но вы можно использовать охранников , чтобы различать такие случаи:

plus a b
  | a == b    = 2 * a
  | otherwise = a + b

Это более гибкий вариант, поскольку он также работает для более сложных условий, чем простое равенство.

14
ответ дан 29 November 2019 в 04:09
поделиться

Haskell не выполняет унификацию.

-1
ответ дан 29 November 2019 в 04:09
поделиться
Другие вопросы по тегам:

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