该眼镜蛇编程语言的语法在很大程度上受到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)
我相信眼镜蛇的早期版本使冒号成为可选项,您可以使用缩进或冒号或同时使用两者。与它在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 Zen的格言之一是“显式优于隐式”,因此使用冒号对块进行显式划分似乎符合Python的一般原理。该设计与历史常见问题也提到,这项决定是基于Python的前任,美国广播公司的经验证据。