2015年7月23日

三項演算子が (ちょっと) 羨ましい Delphi ユーザーの集い

C# 6.0 で ?. という Null 条件演算子 (Null-conditional operators) が実装されましたが、 http://www.buildinsider.net/language/csharplang/0600 我らが Delphi にはそれ以前に三項演算子が存在しません (ぽいのはあるけれど)。 関連ツイートが興味深かったのでまとめてみました。
4

注: "三項演算子っぽいもの" について
System.Math 名前空間と System.StrUtils 名前空間にオーバーロードされた IfThen() という VB の Iif() と類似の関数があります。

[System.Math.IfThen (DocWiki)]
http://docwiki.embarcadero.com/Libraries/ja/System.Math.IfThen
[System.StrUtils.IfThen (DocWiki)]
http://docwiki.embarcadero.com/Libraries/ja/System.StrUtils.IfThen

これらは関数であり演算子ではありません。

Owl's perspective @owlsperspective

@pik C# 6.0に?.演算子が入ったようですね。

2015-07-23 10:40:08
HOSOKAWA Jun @pik

@owlsperspective 入るって予告アナウンスありましたよねー。うう。Delphi にも欲しい…

2015-07-23 10:44:42
HOSOKAWA Jun @pik

@owlsperspective Delphi だとC的な三項演算子が無いので ? を使うのは難しそうなので、やっぱりコロン演算子ですかねー?

2015-07-23 10:45:36
Owl's perspective @owlsperspective

@pik C#に入ったんだからDelphiも!っていうアピールでいかがですか?

2015-07-23 10:46:10
HOSOKAWA Jun @pik

@owlsperspective なるほど!またしても後追い!!

2015-07-23 10:46:41

> だいぶ前から言ってます!!
http://qc.embarcadero.com/wc/qcmain.aspx?d=120838

Ktz @ktz_alias

@pik @owlsperspective if/elseやcaseが文ではなく式になって値返してくれるだけでもうれしいんだけどなぁと思ってます。

2015-07-23 12:42:25
HOSOKAWA Jun @pik

@ktz_alias @owlsperspective そういえば System.Math と System.StrUtils に IfThen がありますが、これ IfThen<T> になっていれば良いのでは…

2015-07-23 12:49:04
Owl's perspective @owlsperspective

@pik @ktz_alias Delphiのジェネリクスにはテンプレート関数(みたいなもの)がなくてrecord型のclass functionにしなきゃいけないのがちょっとアレですね

2015-07-23 13:00:16
HOSOKAWA Jun @pik

@owlsperspective @ktz_alias ああ…そういえばグローバル関数には使えないんでした…

2015-07-23 13:04:33
Ktz @ktz_alias

@owlsperspective @pik "Exit(if hoo then 'OK' else 'NG');"とか書きたい!書きたいー! #駄々っ子

2015-07-23 13:55:46
HOSOKAWA Jun @pik

@owlsperspective @ktz_alias 僕もちょっと作っていたけど、&IF でやってくるとは!さすがです!!

2015-07-23 14:03:26
Ktz @ktz_alias

@owlsperspective @pik いや・・・この以下にも関数的な記述が・・・生理的に・・・ちょっと。 #わがまま

2015-07-23 14:04:00
HOSOKAWA Jun @pik

@sagiri_ameno @owlsperspective @ktz_alias ローカル関数で作ってすぐ破棄みたいなときには役立ちますよね。

2015-07-23 14:10:56
Owl's perspective @owlsperspective

@pik @sagiri_ameno @ktz_alias ARCのこともあるので、むしろブロックローカル変数がほしいです(何度目だ、その主張)

2015-07-23 14:12:44

> PrivateVar.inc
数日前に私が出したクイズの事です。
http://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1628.0

HOSOKAWA Jun @pik

@ktz_alias @owlsperspective ヤッター!スゴい気持ち悪いの出来たよー! " IfExp<String>(1 > 0) + 'true' - 'false' " こんな風に掛けるよー! gist.github.com/freeonterminat…

2015-07-23 15:30:46
Ktz @ktz_alias

@pik @owlsperspective ThenElseは、一方しか必要ないのに、先に両方評価する必要があってムダだから、コールバックにしよう(提案)

2015-07-23 15:38:49
残りを読む(24)

コメント

yuhsuke @yuhsuke 2015年7月23日
Cって80年代のLLだなーと思う。だからそういう部分を羨ましがるのはしようがない。
0