Любое неявное еще в скобках меньше, если-оператор? Язык неизвестен

После обсуждения iOS Crypto Flaw, также обсуждавшейся на Ars Technica, кто-то упомянул, что они столкнулись со случаем, когда линия, следующая за скобкой if выражение, рассматривалось как else,

if (<condition>)
   <expression A>;
   <expression B>;
<expression C>;

Так, по словам человека, выражение B будет пропущено, если условие выполнено, как если бы elseнеявный и ненужный.

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

Есть ли правда в том, что они сказали?Какой язык?

Я уверен, что все основные скриптовые языки следуют моему пониманию. Я думаю, что у человека больше опыта в Objective-C. Но если это правда, это, безусловно, может быть лучшей причиной, чтобы всегда использовать скобки.

1 ответ

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

Любой возможный способ (я мог бы придумать) реализации этого мог бы привести к либо внешне непоследовательному поведению при взгляде на другие правила синтаксиса в языке, либо к очень ограничивающему с точки зрения того, что возможно, и, так или иначе, изначально вредно для читабельности - если это имеет такой же отступ, как тогда у вас будет оператор if с несколькими строками в блоке, или это будет запрещено? Если else Вместо этого часть будет уменьшать отступы, как бы вы различали код, который является частью elseили код, который находится сразу после оператора if, или должен иметь каждый оператор if else часть? И многострочный else также будет проблемой в любом случае. Если это просто основано на том, когда есть или нет фигурные скобки или что-то подобное, это будет действительно запутанным для начала.

Тем не менее, есть также эзотерические языки, у которых действительно есть девиз "все идет".

Эзотерический язык программирования (иногда сокращенный до esolang) - это язык программирования, предназначенный для проверки границ дизайна языка компьютерного программирования, как подтверждение концепции или как шутка.

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

Альтернативой может быть то, что человек смотрел на такую ​​ситуацию:

<type> someFunction()
{
   if (<condition>)
      return <expression A>;
   return <expression B>;
}

Это было бы синонимом явного else перед вторым оператором возврата, так как оператор возврата в операторе if будет вызывать выполнение оператора возврата, следующего за ним, только когда условие ложно.

Другие вопросы по тегам