在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
在PHP中,如下:
<?php $foo = 'abc'; echo "{$foo";
是语法错误。
如果你真的想要{,后面跟着$foo的内容,你必须使用。:
<?php $foo = 'abc'; echo '{' . $foo;
其他回答
下面的c#代码抛出NullReferenceException而不是打印1:
static void SomeMethod(string format, params object[] args)
{
Console.WriteLine(args.Length);
}
static void Main(string[] args)
{
SomeMethod("blabla", null, "Ok here"); // print 2
SomeMethod("blabla", null); // exception
}
当我在大学的时候,我用一种叫做SNOBOL的语言做了一点工作。整个语言虽然很酷,但却是一个大WTF。
它的语法是我见过的最奇怪的。而不是GoTo,你使用:(标签)。当你有:S(label)(成功/true时的goto标签)和:F(label)(失败/false时的goto标签)并且你在一行中使用这些函数检查某些条件或读取文件时,谁还需要if呢?所以这个表述是:
H = INPUT :F(end)
将从文件或控制台读取下一行,如果读取失败(因为到达EOF或任何其他原因),将转到标签“end”。
然后是$ sign操作符。它将使用变量中的值作为变量名。所以:
ANIMAL = 'DOG'
DOG = 'BARK'
output = $ANIMAL
将在控制台上显示'BARK'值。因为这还不够奇怪:
$DOG = 'SOUND'
将创建一个名为BARK的变量(参见上面分配给DOG的值),并赋予它一个“SOUND”的值。
你看得越多,情况就越糟。我所发现的关于SNOBOL的最好的陈述(来自链接文本)是“该语言的强大功能及其相当惯用的控制流特性使得编写后的SNOBOL4代码几乎不可能阅读和理解。”
在流行性腮腺炎中,你可以有一个带偏移的GOTO。如果你有(我的腮腺炎已经生锈了…)
some_label if x=1 do_something
else do_something_else
然后是代码
goto some_label+1
将跳转到ELSE语句…
C / C + +:
快速平方根逆算法利用了IEEE浮点表示法(代码复制自维基百科):
float InvSqrt(float x)
{
union {
float f;
int i;
} tmp;
tmp.f = x;
tmp.i = 0x5f3759df - (tmp.i >> 1);
float y = tmp.f;
return y * (1.5f - 0.5f * x * y * y);
}
在找函数吗?为什么不是一门语言呢?
我喜欢PHP,但它总是这样构建:“哦,糟了!我忘了这个!让我们在函数"中添加另一个参数,结果如下:
Str_replace ($search, $replace, $subject…) Strstr ($subject, $search,…)
注意额外的下划线和参数的不同顺序。
这里还有一些东西
$a = array( 'a', 'b', 'c', 'd');
print_r($a); //Prints array( 0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd');
unset($a[2]); //Destroys the element 2 of the list
print_r($a); //Prints array( 0 => 'a', 1 => 'b', 3 => 'd');