主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

向下

IIF 找到类似的分支


EternalWonderer   (2002-04-11 12:52) [0]

目标:通过使用而不是标准设计来提高代码可读性
If a<b
Then a
Else b;

BASIC - 类似的功能
IIF(a<b,a,b);

它简单地解决了:
Function IIF(b: Boolean; sTrue,sFalse: String): String; Overload;
Begin
If b Then Result := sTrue Else Result := sFalse;
End;

Function IIF(b: Boolean; iTrue,iFalse: Integer): Integer; Overload;
Begin
If b Then Result := iTrue Else Result := iFalse;
End;


但是有一个问题:
IIF(MyObject<>Nil,MyObject.MyField,-1)
将无法工作,因为无论表达式是true还是false,都将生成对MyObject.MyField的调用。

问题:这种限制有什么办法吗?



wicked   (2002-04-11 12:57) [1]

imkho这是不可能的......



gek   (2002-04-11 13:03) [2]

可能需要检查和
如果MyObject.MyField <> nil



Anatoly Podgoretsky   (2002-04-11 13:10) [3]

上诉不会发生!
这是你的IIF实现

函数IIF(Expr,TrueRet,FalseRet:Variant):变体;
开始
如果Expr则结果:= TrueRet else Result:= FalseRet;
结束;




Игорь Шевченко   (2002-04-11 13:12) [4]

美好的一天,

这是不可能的。 试图绕过这个恕我直言,恶化了代码的可读性。

但我不明白为什么大惊小怪......
至于可读性,VCL具有非常易读的代码,尽管没有各种各样的萨满小工具:-)

真诚的,



Anatoly Podgoretsky   (2002-04-11 13:13) [5]

我为你的版本道歉 会发生的



EternalWonderer   (2002-04-11 13:46) [6]

Anatoly Podgoretsky©(11.04.02 13:13)
所以它会在您的版本中发生 - 将参数传递给函数时...

Igor Shevchenko©(11.04.02 13:12)
谢谢,爱抚:-)。 有必要从其他语言中获得良好的经验。 另外,当编写冗长而复杂的IMHO程序时,希望通过将重复的代码片段放入单独的函数中来尽可能地简化代码 - 否则没有人会想到它,包括作者。 你不这样做吗?



EternalWonderer   (2002-04-11 13:51) [7]

Anatoly Podgoretsky©(11.04.02 13:13)
等一下......
它即将到来 在传递IIF函数参数时避免寻址不存在的对象。 当然,如果您将函数传递给现有对象的链接,那么无论是在我的版本还是在您的版本中,一切都可以正常运行。



Игорь Шевченко   (2002-04-11 13:52) [8]

美好的一天,EternalWonderer,

是的,完全没有:-))

我不会说这是一次很好的经历。 习惯于在Pascal中阅读文本的人将再一次与新功能的出现搏斗。 恕我直言,当然:-)

我也尝试在不同的函数中制作重复的代码片段,但程度不同:-)

我可以再次重申,VCL写得很可读,没有这样的创新。

真诚的,伊戈尔舍甫琴科



Fantasist   (2002-04-12 08:27) [9]

而我认为Delphi中的东西就像C ++ - shny #define。 没有?



Игорь Шевченко   (2002-04-12 09:29) [10]

美好的一天,Fantasist,

不::-)

真诚的,



Anatoly Podgoretsky   (2002-04-12 09:47) [11]

EternalWonderer(11.04.02 13:46)
你不从这一边看我的变体,它只是作为一个选项IIF给出,而不是更多



REA   (2002-04-12 10:52) [12]

实际上,Delphi 6已经具备了这样的功能。 但恕我直言,没有任何意义。



Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

楼上





内存:0.58 MB
时间:0.025 c
1-81001
Chainik
2002-04-12 20:11
2002.04.25
标题栏中的文件名


3-80753
nic406
2002-04-04 06:35
2002.04.25
使用VIEW和JOIN(SQL2000)进行示例 - 帮助新手!


1-80931
Ser_Kham1
2002-04-11 16:02
2002.04.25
帮助文件创建


14-81055
海伦娜
2002-03-20 07:06
2002.04.25
你如何让组件认为Delphi正在运行?


7-81099
MIFIst
2002-01-25 15:21
2002.04.25
记忆......





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский