https://github.com/abersheeran/mingshe
写过 Javascript 的人应该很熟悉的 ?? 运算符。a ?? b 等价于 a if a is not None else b。
预计还会增加 Javascript 里的 ?. 操作符,但还在考量之中。欢迎大家使用、提意见。

https://github.com/abersheeran/mingshe
写过 Javascript 的人应该很熟悉的 ?? 运算符。a ?? b 等价于 a if a is not None else b。
预计还会增加 Javascript 里的 ?. 操作符,但还在考量之中。欢迎大家使用、提意见。
1 Bazingal Sep 9, 2021 建议直接抄 C#,反正 Javascript 很多也是借鉴 C#的,比如上面提到的两个 |
2 abersheeran OP @Bazingal C# 没怎么看过,就拿来做过一次大学的作业我正经用过的语言只有 Javascript 、Python 、C 、Rust 、Go……有空我去看看它的设计 |
3 yazinnnn Sep 9, 2021 |
4 abersheeran OP @Bazingal 好家伙,C# 的 ?? 是右结合的,我设计的是左结合的。我赶紧去注明一下。 |
5 abersheeran OP @yazinnnn 你这个,请去 https://github.com/hylang/hy 提。 |
6 Ediacaran Sep 9, 2021 via iPhone c=a or b |
7 Rwing Sep 9, 2021 C# 的 ??= 和 ?. 直接抄就好 |
8 2i2Re2PLMaDnghL Sep 9, 2021 @abersheeran 这个左结合和右结合有什么区别啊 |
9 Asjun Sep 9, 2021 C# 的 ?? 也是先看左侧的吧,a ?? b 等于 if (a != null) a else b |
10 abersheeran OP @2i2Re2PLMaDnghL a ?? b ?? c 左结合就从左开始算起,右结合从右算起。 |
11 abersheeran OP https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/null-coalescing-operator C# 的 a ?? b ?? c 等价于 a ?? (b ?? c) mingshe 的 a ?? b ?? c 等价于 (a ?? b) ?? c |
12 Asjun Sep 10, 2021 @abersheeran 学到了,以前一直以为 C#的是左结合 |
13 2i2Re2PLMaDnghL Sep 10, 2021 @abersheeran 我的意思是,这个操作不是符合结合律的吗?行为上左结合和右结合没有区别啊 如果 a 非 null,则无论左结合还是右结合都不会计算 b 或 c ;如果 b 非 null 无论左结合还是右结合都不会计算 c 至于有区别的是 C#独有的 ??= ,左结合就根本没法运算,因为左边的 ??= 出来的不是一个左值。 |
14 abersheeran OP @2i2Re2PLMaDnghL 我想了一下,好像在这一个操作符上确实没什么区别。 |