Вопросы с тегом «pattern-matching»

Используйте этот тег для вопросов о проверке того, имеет ли структура данных определенную форму или содержит определенные значения в определенных местах. Многие функциональные языки предоставляют конструкции сопоставления с образцом. Большинство вопросов в этом теге также должны иметь тег для языка, на котором вы программируете. НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ТЕГ ДЛЯ ОБЫЧНЫХ ВОПРОСОВ ВЫРАЖЕНИЯ, ИСПОЛЬЗУЙТЕ [regex] INSTEAD; аналогично, для сопоставления с образцом (подстановки) в POSIX-подобных оболочках используйте [glob].

325
Как я могу использовать обратные или отрицательные подстановочные знаки при сопоставлении с образцом в оболочке Unix / Linux?

Скажем, я хочу скопировать содержимое каталога, исключая файлы и папки, имена которых содержат слово «Музыка». cp [exclude-matches] *Music* /target_directory Что должно пойти вместо [exclude-match] для достижения этой...

277
В чем разница между «x = ноль» и «x == ноль»?

В C # 7 мы можем использовать if (x is null) return; вместо того if (x == null) return; Есть ли преимущества использования нового способа (прежний пример) по сравнению со старым? Семантика отличается? Это просто вопрос вкуса? Если нет, когда я должен использовать один поверх другого? Ссылка: Что...

148
Использование операторов сравнения в системе сопоставления с образцом Scala

Можно ли сопоставить сравнение с помощью системы сопоставления с образцом в Scala? Например: a match { case 10 => println("ten") case _ > 10 => println("greater than ten") case _ => println("less than ten") } Второе утверждение case недопустимо, но я хотел бы иметь возможность указать...

128
Что такое «сопоставление с образцом» в функциональных языках?

Я читаю о функциональном программировании и заметил, что сопоставление с образцом упоминается во многих статьях как одна из основных функций функциональных языков. Может ли кто-нибудь объяснить разработчику Java / C ++ / JavaScript, что это...

125
Сопоставление групп Ruby Regexp, присвоение переменных в 1 строке

В настоящее время я пытаюсь преобразовать строку в несколько переменных. Пример строки: ryan_string = "RyanOnRails: This is a test" Я сопоставил его с этим регулярным выражением с 3 группами: ryan_group = ryan_string.scan(/(^.*)(:)(.*)/i) Теперь, чтобы получить доступ к каждой группе, мне нужно...

123
Как сопоставление с образцом в Scala реализовано на уровне байт-кода?

Как сопоставление с образцом в Scala реализовано на уровне байт-кода? Это что-то вроде серии if (x instanceof Foo)конструкций или чего-то еще? Каковы его последствия для производительности? Например, учитывая следующий код (из Scala By Example, страницы 46-48), как будет evalвыглядеть эквивалентный...

119
Как выбрать строки между двумя шаблонами маркеров, которые могут встречаться несколько раз с awk / sed

Используя awkили sedкак я могу выбрать линии, которые встречаются между двумя разными шаблонами маркеров? Эти шаблоны могут быть отмечены несколькими разделами. Например: предположим, что файл содержит: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu И начальный образец, abcа конечный образец...

114
Варианты производительности запросов LIKE в PostgreSQL

Я видел довольно большие различия во времени ответа на LIKEзапросы к конкретной таблице в моей базе данных. Иногда я получаю результаты в пределах 200-400 мс (очень приемлемо), но в других случаях для получения результатов может потребоваться до 30 секунд. Я понимаю, что LIKEзапросы очень...

113
Почему сопоставление с образцом в Scala не работает с переменными?

Возьмем следующую функцию: def fMatch(s: String) = { s match { case "a" => println("It was a") case _ => println("It was something else") } } Этот шаблон хорошо сочетается: scala> fMatch("a") It was a scala> fMatch("b") It was something else Что я хотел бы сделать, так это следующее:...

104
Нечеткий поиск Javascript, который имеет смысл

Я ищу библиотеку JavaScript нечеткого поиска для фильтрации массива. Я пробовал использовать fuzzyset.js и fuse.js , но результаты ужасны (есть демонстрации, которые вы можете попробовать на связанных страницах). После некоторого чтения о расстоянии Левенштейна мне показалось, что это плохое...

100
Сопоставление нескольких классов case в scala

Я выполняю сопоставление с некоторыми классами case и хотел бы обрабатывать два случая таким же образом. Что-то вроде этого: abstract class Foo case class A extends Foo case class B(s:String) extends Foo case class C(s:String) extends Foo def matcher(l: Foo): String = { l match { case A() =>...

100
Elm Compiler работает вечно, компьютер просто нагревается

Я не уверен, что вызывает эту проблему, но в проекте, который я создаю, компилятор тратит часы на компиляцию модуля. Общий размер моей кодовой базы составляет 352 КБ, но ни один из модулей не превышает 10 КБ. Я использую собственный порт, но это очень тривиально; Я просто увлекаюсь Date.now()этим....

98
Поддерживает ли PostgreSQL параметры сортировки без учета акцента?

В Microsoft SQL Server можно указать параметры сортировки «без учета акцента» (для базы данных, таблицы или столбца), что означает, что это возможно для запроса типа SELECT * FROM users WHERE name LIKE 'João' найти строку с Joaoименем. Я знаю , что можно раздеться акцентами из строк в PostgreSQL с...

85
Как сопоставить несколько значений по шаблону в Scala?

Допустим, я хочу обрабатывать несколько возвращаемых значений из удаленной службы, используя один и тот же код. Я не знаю, как выразить это в Scala: code match { case "1" => // Whatever case "2" => // Same whatever case "3" => // Ah, something different } Я знаю, что могу использовать...

84
Как переопределить применение в случае класса companion

Итак, вот ситуация. Я хочу определить класс case следующим образом: case class A(val s: String) и я хочу определить объект, чтобы при создании экземпляров класса значение 's' всегда было в верхнем регистре, например: object A { def apply(s: String) = new A(s.toUpperCase) } Однако это не работает,...

10
Как я могу использовать список с фиксированной минимальной длиной полным и элегантным способом?

В настоящее время я имею дело с функцией, которая выглядит следующим образом: foo = (\(a:b:c:d:e:f:_) -> foobar a b c d e f) . (++ repeat def) Другими словами, для данного списка он использует первые шесть элементов для чего-то, и если список имеет длину менее шести элементов, он использует defв...