🛒

条件演算子がない世界の苦しみ

2024/01/14に公開

https://github.com/golang/go/blob/7abeefd2b1a03932891e581f1f90656ffebebce4/src/runtime/malloc.go#L211

を見て

条件演算子も 値を返す if 文も コンパイル時計算が保証される関数も ない世界ではこうするしか無いよな、と思った。

? : があれば各定数が論理型になって

go
heapAddrBits = (
  goarch.IsMips || goarch.IsMipsle ? 31
  : goarch.IsWasm ? 32
  : goarch.IsArm64 && goos.isIos ? 40
  : _64bit ? 48
  : 32 )

ぐらいになる(自信ない)。

※ 元の式からはわからないけど、IsMips のときは _64bit にならないとか、そういうことが色々ある。

条件演算子(のようなもの)はわかりにくい式を作りやすいけど、条件演算子がないと分かりにくくしか書けない式をわかりやする能力もあるんだから、存在したほうがいいと思う。

Discussion