在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?

请每个回答只回答一个特征。


当前回答

Perl可以自动将26进制转换为10进制,如果你能在早上接受自己的话……

$ perl -E "say lc (@a='a'..'asdf')"
30530

其他回答

我所知道的最奇怪的特性来自c++世界:SFINAE。

最糟糕的是,它实际上非常有用,在BOOST中广泛使用SFINAE对我来说已经足够了。

当今所有语言:

TypeA a = (TypeA)some_operation_returning_TypeB(1,2,3); // TypeB is not inheriting TypeA

在运行时失败,并带有"Cast to TypeA failed exception"-消息(或类似消息)。这告诉我们程序员到底有多懒。他们没有办法产生消息“未能将TypeA的变量‘a’与TypeB的值‘some_operation_returning_TypeB(1,2,3)’赋值”。他. .他们的座右铭是“犯错误的人必须受苦”。

JavaScript真值表:

''        ==   '0'           // false
0         ==   ''            // true
0         ==   '0'           // true
false     ==   'false'       // false
false     ==   '0'           // true
false     ==   undefined     // false
false     ==   null          // false
null      ==   undefined     // true
" \t\r\n" ==   0             // true

资料来源:Doug Crockford

Perl可以自动将26进制转换为10进制,如果你能在早上接受自己的话……

$ perl -E "say lc (@a='a'..'asdf')"
30530

在Visual Basic 7及以上版本中,我发现实现了短路逻辑求值以保持与遗留的Visual Basic <=6代码的兼容性,有点WTF:

而且 (MSDN) OrElse (MSDN)