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

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


当前回答

这并不是说它被大量使用,而是c++的“返回对静态大小数组的引用”的语法很奇怪:

struct SuperFoo {
  int (&getFoo() const)[10] {
    static int foo[10];
    return foo;
  }
}

在上述情况下,Ofc方法可以声明为静态const

其他回答

一些早期的动态语言(包括,如果我没记错的话,Perl的早期版本)没有弄清楚什么是好的动态,什么是坏的动态。所以他们中的一些人允许这样做:

1 = 2;

在这句话之后,下列情况是正确的:

if(1 + 1 == 4)

在ColdFusion中,数组从1开始。

JCL条件返回执行。

//STEP02 EXEC PGM=PROG02,COND=(4,GT,STEP01) .

该特性允许您根据前面步骤的返回代码运行或不运行某个步骤。真是个不错的功能。

除了一些小功能,把逻辑颠倒过来。

首先,如果条件为真,则不运行步骤。

其次,4 GT,STEP01实际上意味着“如果STEP01的返回码大于4”

因此,整个过程意味着“如果来自STEP01的返回代码大于4,则不要运行此步骤”。这与“如果4大于来自STEP01的返回代码,则运行步骤”的简单解释几乎相同,但并不完全相同。

考虑到你唯一认真看待这些事情的时间是凌晨2点30分左右,电话另一端是一个疯狂的夜班接线员,这种双重模糊会导致严重的头痛。

Perl的CORE::开放和标准库具有面向对象的元素,用一个过程性接口掩盖: Open (my $fh, '>', 'foobar'); Open是一个构造函数,对my()返回的引用进行操作,并接受参数'>'和'foobar'。此外,这是一个受祝福的typeglob对象(意味着它不能在对象内部保存状态)。

关于我的perlmonks post IO::File vs CORE::的更多信息,请在这里打开:http://www.perlmonks.org/?node_id=763565

在Perl中,你可以做到:

my $test = "Hello World";
substr($test, 0, 5) = "Goodbye";

print $test;

这在其他语言中可行吗?