RunOnce в Foreach - PullRequest
       10

RunOnce в Foreach

0 голосов
/ 26 июля 2010

Я пишу немного скриптового языка просто для забавы и изучения кодов: P

Я просто хотел бы услышать ваши мнения / предложения.У меня есть идея, но я не хочу включать то, на что люди захотят плюнуть.Я планирую сделать этот язык открытым исходным кодом один раз, в ближайшее время.

Кто-нибудь думает, что было бы круто иметь что-то вроде:

[Foreach] Uppercase Letter s
          in Case-Insensitive Word SallySawtheSeafiShandateit:

          Count++.

          s.Highlight: True.

          RunOnce.ProtectedMethod.ActivateProtectedMethod: IsTrue.

[Protected Method.LockTo: [Foreach]].IsTrue
          StatusBar.Message: Match for s was found. Total: Count..
          RunOnce.ProtectedMethod.Disable.

Пояснение: Что на самом деле выше делает, это ищетчерез строку текста «SallySawtheSeafiShandateit» и выделяет каждый матч.Но когда он находит самое первое совпадение для «s», он запускает метод под названием «IsTrue» и устанавливает для строки состояния значение «совпадение найдено ...».А затем деактивирует метод RunOnce, чтобы к нему больше нельзя было обращаться, поскольку нет необходимости его повторного запуска.

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

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

Пожалуйста, будьте жестоко честными.:)

Спасибо

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Это выглядит как чрезмерное усложнение следующей структуры (в стиле java):

boolean ranOnce = false;
for (char c : string.toCharArray()) {
  if (c != 's') continue;
  if (!ranOnce) {
    // do stuff once
    ranOnce = true;
  }
  // do other stuff
}

Мне кажется, что это чрезмерное инженерное решение, когда единственный булев и условие if делают свое дело.

0 голосов
/ 26 июля 2010

Hm.Для такого рода ситуаций я бы обычно использовал переменную-флаг и условное выражение.

Я бы пересмотрел «runOnce» - это немного неоднозначно.Выполняется ли первая итерация, последняя итерация где-то посередине?Из того, что я могу сказать, похоже, что ваш работает в самой первой итерации, но с другой стороны, какой смысл отображать общее количество в первой итерации?Вы будете знать, что это просто «1».

За свои деньги, я думаю, я бы фактически использовал два ключевых слова, которые вызывали события / методы / и т. Д. На первой и последней итерации соответственно.

...