在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
在ColdFusion
Struct(又名Java HashMap)是通过引用传递的。
你可能认为其他数据类型的行为就像Java…
数组是按值传递的,wtf!
List只是一个普通的逗号分隔的字符串!
其他回答
我有点纠结:
1;
在perl中,模块需要返回true。
来自边远吗?
在ColdFusion中,数组从1开始。
绝对最糟糕的WTF必须是Cobol的ALTERED GOTO。
语法非常直截了当:“ALTER label1 TO GOTO label2”,但是调试运行时面条的结果令人难以置信。
VBScript中的括号标识符
VBScript有所谓的方括号标识符,这些标识符定义在方括号中,如下所示:
[Foo]
实际上,它们非常方便,因为它们允许您以保留字命名变量和例程,调用第三方对象的方法,其名称是保留字,并且还可以在标识符中使用几乎任何Unicode字符(包括空格和特殊字符)。但这也意味着你可以和他们一起玩:
[2*2] = 5
[Здравствуй, мир!] = [Hello, world!]
[] = "Looks like my name is an empty string, isn't that cool?"
For[For[i=0]=[0]To[To[To[0]
[Next[To]([For[i=0])=[For[i=0]
Next
另一方面,括号标识符可能是一个陷阱,以防你在这样的语句中忘记引号:
If MyString = "[Something]" Then
因为If MyString = [Something] Then是一个完全合法的语法。(这就是为什么必须使用具有语法高亮显示功能的IDE !)
更多关于括号标识符的信息,请参阅Eric Lippert的博客:
VBScript琐事:括号标识符和保留字不兼容 VBScript测试答案,第六部分