我想,我把手远离德尔福太久了.在过去的几年里,我一直忙于Java和PHP.现在,当我回到做一点Delphi工作时,我意识到我真的很想念Java和PHP都支持的条件运算符.
在Delphi程序中你会找到多少个这样的行?
var s : string;
begin
...<here the string result is manipulated>...
if combo.Text='' then
s := 'null'
else
s := QuotedStr(combo.Text);
result := result + s;
end;
Run Code Online (Sandbox Code Playgroud)
哪里很简单
result := result + (combo.text='')?'null':quotedStr(combo.text);
Run Code Online (Sandbox Code Playgroud)
就够了 我喜欢这个,它不仅缩短了代码,这样我也避免声明一些辅助s:string变量.
为什么条件运算符不是Delphi的一部分 - 它们是否会得到支持?我注意到2009版Delphi(泛型)有很多语言扩展,为什么不添加这个功能呢?
在C中,您可以在一行中分配两个变量
b = a = sqrt(10);
Run Code Online (Sandbox Code Playgroud)
在德尔福
b := a := Sqrt(10);
Run Code Online (Sandbox Code Playgroud)
不被允许.
有了Delphi中讨论IfThen的三元运算符?:的"替代" - 相当于C#的三元运算符?总之,IfThen似乎并非绝对必要.
所以也许还有这样的东西:
function AssignAndReturn(var LHS: Integer; RHS: Integer): Integer;
begin
LHS := RHS;
Result := RHS;
end;
(...)
var
a, b: Integer;
begin
b := AssignAndReturn(a, Round(Sqrt(10)));
Run Code Online (Sandbox Code Playgroud)
我不是想"让一切看起来像C".我刚才注意到,有时再次在同一行中"重用"赋值的右侧会很好.(参见Lazarus/Free Pascal:如何改进while循环的编码风格(避免使用无限循环),例如,每次传递都会重新分配布尔表达式.)