Обычно я пишу код на языке C # или Objective-C и недавно взял на себя обязательство изучать новый язык программирования Apple - Swift.
Первое, что я заметил, это то, что вам не нужно добавлять точки с запятой в конце строки в Swift, но если вы делаете - по крайней мере из того, что я тестировал - это не мешает компилятору.
Когда я пишу:
int someNumber = 0;
в Objective-C точка с запятой сообщает программе, что строка окончена и не переходит на следующую строку.
С Swift я могу объявить переменную с
var someNumber:Int = 5
и не добавляйте точку с запятой, и система знает, что это конец строки.
Что позволяет некоторым языкам делать это, а другим - нет? Почему бы не сохранить единую систему добавления точки с запятой в конец?
Ответы:
Роберт дал хороший ответ относительно Swift, я постараюсь добавить немного больше о синтаксическом анализе в целом и о том, зачем использовать точки с запятой или нет.
Когда вы компилируете программу, есть несколько шагов, прежде чем ваш исходный файл превратится в исполняемый код, одним из первых из которых будет чтение и анализ . Во время синтаксического анализа ваш код преобразуется из последовательности символов в структурированное представление в соответствии с грамматикой языка. Для этого необходимо, чтобы элементы, составляющие ваш код (переменные, константы, объявления и т. Д.) Были как-то идентифицированы и разделены. Когда вы делаете заявление, как:
Это просто последовательность символов, которую нужно как-то превратить в концепцию «создать« вещь », называемую
someNumber
типом,int
и присвоить0
ей» .Это требует определения, где именно утверждение начинается и заканчивается. Представьте, если бы у вас было это:
Вы должны знать, что это две разные декларации. Для этого
;
используется язык C-like, поэтому синтаксический анализатор читает символы до тех пор, пока не найдет их, и пытается понять то, что было только что прочитано, как одно утверждение. Это позволяет, как сказал Роберт, иметь несколько операторов в одной строке, например:Который имеет тот же эффект, что и запись их в две строки.
На других языках, таких как Python , вы должны помещать каждое утверждение в отдельную строку.
Поэтому нет необходимости добавлять
;
, потому что сам язык не позволяет вам добавлять операторы в одной строке!Тем не менее, другие языки, такие как LISP или Scheme , имеют совсем другой способ группировки утверждений (хорошо, они на самом деле не являются утверждениями, но давайте пока проигнорируем это). Таким образом, у вас есть только круглые скобки для всего:
Опять же, вам не нужно
;
только потому, что вы используете те же символы ()
,(
) для вещей, которые в других языках{
,}
,:
и т.д. Кто - то , кто знает синтаксис Lisp может спросить: Зачем вам;
в конце вашего заявления ?Просто чтобы добавить пример с незнакомцем: OCaml точка с запятой не только в конце операторов, но и с двумя!
Почему? Я не знаю. :)
Разные языки предназначены для разных целей и разных философий. Если бы все языки имели одинаковый синтаксис и соглашения, они, вероятно, позволили бы вам делать одни и те же вещи одинаково.
источник
Разрывы строк используются вместо точек с запятой для разделения конца оператора.
В руководстве по языку: Основы сказано:
Почему? Потому что так хотели это сделать дизайнеры языка.
Второе предложение выше намекает на то, почему вам не нужны точки с запятой; большинство утверждений в одну строку. Посмотрите на этот пример Bubble Sort; Сочетание однострочных операторов и отсутствие точек с запятой обеспечивает очень чистый синтаксис, похожий на VB, но менее подробный:
Поскольку операторы в Swift обычно заканчиваются переводом строки, потребность в точках с запятой для обозначения конца оператора уменьшается. Другие языки, которые используют точки с запятой, не работают таким образом; Вы можете свободно писать многострочные операторы, но единственный способ, которым компилятор знает, что оператор закончился, - это когда вы ставите точку с запятой в конце.
Когда операторы не заканчиваются на разрыв строки, вы должны поместить разрыв строки в место, которое компилятор Swift может распознать как продолжение предыдущей строки:
источник