你什么时候遇到可能过时的语法,从来没有使用或只是简单的混淆,你无法理解你的生活.
例如,我从来不知道逗号是C中的实际操作符.所以当我看到代码时
if(Foo(), Bar())
Run Code Online (Sandbox Code Playgroud)
我只是吹了一个垫子试图弄清楚那里发生了什么.
我很好奇在其他语言中可能存在一些从不肮脏的小角落.
Jar*_*Par 21
C++的局部变量默认构造函数的语法.起初我写了以下内容.
Student student(); // error
Student student("foo"); // compiles
Run Code Online (Sandbox Code Playgroud)
这导致我通过一个神秘的C++错误消息阅读大约一个小时.最终一个非C++新手掉了下来,笑了起来,指出了我的错误.
Student student;
Run Code Online (Sandbox Code Playgroud)
Pau*_*ham 21
这总是很刺耳:
std::vector <std::vector <int> >
^
mandatory space.
Run Code Online (Sandbox Code Playgroud)
Nic*_*cki 16
当使用System.DirectoryServices
名称空间绑定到ADAM(Active Directory应用程序模式;我认为现在称为AD LDS)时,我整整一天都在尝试调试这个简单的代码:
DirectoryEntry rootDSE = new DirectoryEntry(
"ldap://192.168.10.78:50000/RootDSE",
login,
password,
AuthenticationTypes.None);
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我不断收到COMException
错误0x80005000,这有助于映射到"未知错误".
我可以使用登录名和密码并通过ADSI Edit绑定到端口.但是这个简单的代码行不起作用.奇怪的防火墙权限?有什么东西搞砸了?某些COM对象未正确注册?为什么它不起作用?
答案?它是LDAP://,而不是ldap://.
这就是我们喝酒的原因.
str*_*ger 10
C++
class Foo
{
// Lots of stuff here.
} bar;
Run Code Online (Sandbox Code Playgroud)
宣言bar
很难看.更常见于C语言,但在C++中尤其烦人.
Gre*_*ill 10
Perl的语法不久前给我带来了糟糕的一天:
%table = {
foo => 1,
bar => 2
};
Run Code Online (Sandbox Code Playgroud)
如果没有适当的警告(在我使用的平台上不可用),这会创建一个单元素哈希,其中一个键作为给定的哈希引用和值undef
.注意微妙的使用{}
,它创建一个新的哈希引用,而不是()
,这是一个用于填充%table
哈希的数组.
我很震惊Python的准三元运算符在我第一次看到它时不是语法错误:
X if Y else Z
Run Code Online (Sandbox Code Playgroud)
这是愚蠢和常见的,但这种语法:
if ( x = y ) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在过去的一年中,我用几种不同的语言抓住了我三次.我非常喜欢R语言使用< - 进行赋值的惯例,如下所示:
x <- y
Run Code Online (Sandbox Code Playgroud)
如果x = y语法的意思是x == y,而x < - y意味着赋值,那么我的大脑将能够更平滑地过渡到数学和编程.
C#的?第一次看到它时,操作员把我扔了一圈.基本上,如果LHS为非空,它将返回LHS,如果LHS为空则返回RHS.
object bar = null;
object foo = bar ?? new Student(); // gets new Student()
Run Code Online (Sandbox Code Playgroud)
C/C++的bitvector语法.关于这个最糟糕的部分是试图谷歌只是基于语法.
struct C {
unsigned int v1 : 12;
unsigned int v2 : 1;
};
Run Code Online (Sandbox Code Playgroud)
Powershell的函数调用语义
function foo() {
params ($count, $name);
...
}
foo (5, "name")
Run Code Online (Sandbox Code Playgroud)
对于那里的非权力出租人.这将有效,但不是你期望的.它实际上创建了一个数组并将其作为第一个参数传递.第二个参数没有明确的价值.正确的版本是
foo 5 "name"
Run Code Online (Sandbox Code Playgroud)