在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
c#中的“动态”。
因为智能感知、类型安全和决定论会随着“动态”关键字的第一次使用而立即消失,因此所有必须与RAD或python受害者一起工作的人的日子都被毁了。
其他回答
Java有一整本关于它们的书。
书http://www.javapuzzlers.com/lg-puzzlers-cropped.jpg
爪哇益智游戏
VB的设计者。NET做了一些非常愚蠢的事情来保持与Visual Basic 6.0的向后兼容性。当然,还不足以让它实际上是兼容的,只是足以让事情变得更加反直觉。但最糟糕的是,你不需要初始化变量,因为它们已经初始化了,除非在极少数情况下它们没有初始化。
For i As Integer = 1 To 3
Try
Dim k As Integer
k += 1
MsgBox(k)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Next
这将输出1 2 3。
拥有一个你不能100%信任的功能不是一个功能,它是一个bug。说它是设计出来的,只会让它成为一个设计错误,而不是实现错误。
MySQL枚举,特别是他们的能力,使生活的地狱毫无准备的同事。
CREATE TABLE foo (
....
dispatched ENUM('0','1') NOT NULL DEFAULT '0',
)
然后:
UPDATE TABLE foo SET ..., dispatched = 1;
哎呀,dispatch被设置为0,因为1没有被引用。这真的惹恼了为我编写代码的人;我现在使用普通的int。
在一个相关的注意事项,即使你添加一个空字符串选项到你的枚举,例如。
blah ENUM('','A','B') NOT NULL,
如果给blah赋了一个无效值,MySQL将使用一个秘密隐藏的空字符串值来表示无效值,这将很难与您自己添加的值区分开来。耶!
我有点纠结:
1;
在perl中,模块需要返回true。
在JavaScript中:
2 == [2]
// Even stranger
2 == [[[2]]]
// And down-right nutty
var a = { "abc" : 1 };
a[[[["abc"]]]] === a["abc"]; // this is also true
幸运的是,stackoverflow.com网站上善良的人们向我解释了这一切: 为什么2 ==[2]在JavaScript?