Я бы предложил использовать следующую комбинацию строк, чтобы проверить, используется ли тип устройства.
Согласно документации Mozilla рекомендуется строка Mobi
. Но некоторые старые планшеты не возвращают true, если используется только Mobi
, поэтому мы должны использовать также строку Tablet
.
Аналогичным образом, для обеспечения безопасности iPad
и iPhone
строки также могут быть использованы для проверки типа устройства.
Большинство новых устройств будет возвращать true
только для строки Mobi
.
if (/Mobi|Tablet|iPad|iPhone/.test(navigator.userAgent)) {
// do something
}
Это называется нелинейным шаблоном . Не так давно в списке рассылки 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
У вас не может быть двух параметров с одинаковыми именами, чтобы указать, что они должны быть равны, но вы можно использовать охранников , чтобы различать такие случаи:
plus a b
| a == b = 2 * a
| otherwise = a + b
Это более гибкий вариант, поскольку он также работает для более сложных условий, чем простое равенство.