Cobra Язык программирования «s синтаксис сильно вдохновлен языка Python, и это делает прочь с двоеточием, так что кажется , что это не является строго необходимым. Тем не менее, недостаточно просто удалить двоеточие, необходимы другие изменения в синтаксисе. Посмотрите, например, этот кусок кода из одного из моих игрушечных проектов :
kons = lambda hd, tl: lambda x: hd if x else tl
virst = lambda l: l(True )
rrest = lambda l: l(False)
Без двоеточия, чтобы отделить тело от списка параметров, мне пришлось бы использовать отступ:
kons = lambda hd, tl
lambda x
hd if x else tl
virst = lambda l
l(True )
rrest = lambda l
l(False)
Я полагаю, что более ранние версии Cobra делали двоеточие необязательным, вы можете использовать отступ или двоеточие или оба. Аналогично тому, как это работает в Ruby, где есть ключевые слова для разделения различных частей управляющих выражений, но вы также можете использовать разделители выражений (точка с запятой или новая строка):
# idiomatic
while true do puts "I am awesome" end
# ↑↑
# non-idiomatic, but legal
while true; puts "I am awesome" end
# ↑
# non-idiomatic, but legal
while true
puts "I am awesome" end
# idiomatic
while true
puts "I am awesome"
end
В текущих версиях Cobra вы можете использовать запятую:
if x
y
можно записать как
if x, y
Вам нужен какой-то способ разделения различных частей управляющих выражений или определений. В Python это двоеточие. Если вы удалите двоеточие, вам нужно заменить его чем-то другим, например, принудительным отступом. Только удаление толстой кишки не сработает.
Единственный способ быть абсолютно уверенным - это формализовать синтаксис с двоеточием и без него и доказать его не двусмысленность.
Обратите внимание, однако, что один из афоризмов дзен Python - «Явное лучше, чем неявное», поэтому явное разграничение блоков с двоеточиями, кажется, соответствует общей философии Python. В FAQ по дизайну и истории также упоминается, что это решение основано на эмпирических данных предшественника Python, ABC.