Car*_*rum 56
绝对不.这个函数调用怎么样:
function(a, b - c);
Run Code Online (Sandbox Code Playgroud)
用空格而不是逗号看起来怎么样?
function(a b - c);
Run Code Online (Sandbox Code Playgroud)
这是意味着function(a, b - c);还是function(a, b, -c);?逗号的使用大概来自于数学,其中使用逗号分隔几个世纪的函数参数.
sep*_*p2k 47
首先,你的前提是错误的.有是使用空格作为分隔符(口齿不清,ML,Haskell中,可能还有其他人)语言.
大多数语言不这样做的原因可能是a)f(x,y)是大多数人习惯使用数学的符号和b)使用空格导致大量嵌套括号(也称为"lisp效应").
小智 12
类似Lisp的语言使用:(f arg1 arg2 arg3)这基本上就是你所要求的.类似ML的语言使用连接来应用curried参数,所以你会写f arg1 arg2 arg3.
已经指出了许多历史原因.
而且,这是因为在大多数语言中,,作为分隔符,空格序列在很大程度上被忽略,或者更确切地说,尽管它们可能分隔标记,但它们本身并不作为标记.对于从C语言派生语法的所有语言来说,这都是无效的.空白序列很像空字,空字分隔任何可能不是最好的想法.
此外,我认为它更清晰,更容易阅读.为什么有空格,它们是不可见的字符,并且基本上只提供格式化的目的,作为真正有意义的分隔符.它只会引入歧义.一个例子是Carl提供的.
第二个会f(a (b + c)).现在是那个f(a(b+c))还是f(a, b+c)?
JavaScript的创建者有一个非常有用的想法,类似于你的想法,它产生了同样的问题.这个想法是,;如果声明完成,ENTER也可以作为.注意:
function a() {
return "some really long string or expression or whatsoever";
}
function b() {
return
"some really long string or expression or whatsoever";
}
alert(a());//"some really long string or expression or whatsoever"
alert(b());//"undefined" or "null" or whatever, because 'return;' is a valid statement
Run Code Online (Sandbox Code Playgroud)
事实上,我有时倾向于在语言中使用后一种符号,而没有这种"特征".JavaScript强制一种方式来格式化我的代码,因为有人有一个很酷的想法,使用ENTER代替;.
我认为,有一些很好的理由说明为什么有些语言是这样的.特别是在动态语言(如PHP)中,没有编译时检查,编译器可能会警告您,它解决上面给出的歧义的方式与您想要进行的调用的签名不匹配.你会遇到许多奇怪的运行时错误和非常艰难的生活.
有些语言允许这样做,但有很多原因,为什么会这样做.首先,因为一群非常聪明的人坐下来花了相当长的时间设计一种语言然后发现,它的语法在,大多数时候都过时了,因此决定消除它.
| 归档时间: |
|
| 查看次数: |
3403 次 |
| 最近记录: |