aiscript
aiscript copied to clipboard
Operators for `null` (`null`関連の演算子)
Summary
現状v.tags == null || v.tags.reduce(...)のように書いているコードを、v.tags?.reduce(...) ?? falseみたいに書けるようになったらいいなと思いました。
Proposed Syntax
Null-conditional operators (null条件メンバーアクセス演算子)
object?.property // if (object == null) {null} else {object.property}
object?.function() // if (object == null) {null} else {object.function()}
array?[0] // if (array == null) {null} else {array[0]}
Null-coalescing operators (null結合演算子)
x ?? y // if (x == null) {y} else {x}
x ?? y ?? z // x ?? (y ?? z)
x ??= y // if (x == null) {x = y}
x ??= y ??= z // x ??= (y ??= z)
実はその構文をエラー型に対して使いたいという話がありまして…( #403 ) nullも対象にするか、それぞれ別の構文を用意するといいですかね?
エラーの方は!!や!.を採用するのはどうでしょうか。
エラーの方は
!!や!.を採用するのはどうでしょうか。
!.がnon-null assertionと被るのがやや懸念点だけど悪くないかも…?
トークナイズ時点で!を2つ繋げた!!との見分けがつきにくい?と思いましたが、そもそもAiScriptでは暗黙の変換を行わないので二重否定の!!を残す必要がありませんでしたね