Какой смысл strspn?

В таком сценарии я задам себе эти вопросы -

  1. Они представляют собой отдельные транзакции?
  2. Будут ли происходящие события различаться в зависимости от типа?

Ответ на первый вопрос сам по себе часто приводит к разумной совокупной структуре.

В вашем конкретном примере, поскольку отличаются только типы, я думаю, они могут быть созданы в одной транзакции. Кроме того, инициируемые события не будут отличаться между типами, поэтому лучше иметь один репозиторий.

7
задан Greg 16 December 2008 в 17:52
поделиться

4 ответа

Хотя Вы связываетесь с руководством PHP, strspn() функция прибывает из библиотек C, наряду с strlen(), strcpy(), strcmp(), и т.д.

strspn() удобная альтернатива выбору через символ строки символом, тестируя, если символы соответствуют одному из множества значений. Это полезно при записи токенизаторов. Альтернатива strspn() было бы много повторяющегося и подверженного ошибкам кода как следующее:

for (p = stringbuf; *p; p++) {
  if (*p == 'a' || *p == 'b' || *p = 'c' ... || *p == 'z') {
    /* still parsing current token */
  }
}

Можно ли определить ошибку?:-)

Конечно, на языке со встроенной поддержкой соответствия регулярного выражения, strspn() имеет мало смысла. Но при записи элементарного синтаксического анализатора для DSL в C, это довольно изящно.

4
ответ дан 7 December 2019 в 10:09
поделиться

Это на основе функция ANSI C strspn(). Может быть полезно в низкоуровневом C коде парсинга, где нет никакого высокоуровневого строкового класса. Это значительно менее полезно в PHP, который имеет много полезных строковых функций парсинга.

1
ответ дан 7 December 2019 в 10:09
поделиться

Ну, моим пониманием это - то же самое как этот regex:

^[set]*

Где установленный строка, содержащая символы, которые будут найдены.

Вы могли использовать его, чтобы искать любое число или текст в начале строки и разделить.

Кажется, что это было бы полезно при портировании кода на php.

0
ответ дан 7 December 2019 в 10:09
поделиться

Для функций как atoi - полезно конкретно, где у Вас есть строка, Вы хотите преобразовать в число, и Вы не хотите иметь дело с чем-либо, что не находится в наборе "-.0123456789"

Но да, это ограничило использование.

- Adam

0
ответ дан 7 December 2019 в 10:09
поделиться
Другие вопросы по тегам:

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