问题标签 [syntactic-sugar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
29 回答
2785260 浏览

java - Java 'for each' 循环是如何工作的?

考虑:

如果不使用for each语法,等效for循环会是什么样子?

0 投票
30 回答
13551 浏览

javascript - 最好的 javascript 语法糖

这里有一些宝石:

字面量:

默认值:

我们当然知道匿名函数,但是能够将它们视为文字并在现场(作为闭包)执行它们很棒:

问题: javascript 中还有哪些出色的语法糖?

0 投票
2 回答
423 浏览

scala - Scala 中是否有用于在匿名函数中绑定值的语法糖?

而不是写

我想写一些类似的东西

Scala 中有没有类似这种语法糖的东西?

0 投票
3 回答
781 浏览

refactoring - Duck 类型作为反射的语法糖:好主意还是坏主意?

我最近一直在想,在 Java 和 C# 等语言中,将“鸭子”类型作为方法参数类型包含在内是否是一种很好的语法糖形式?这将如下所示:

这可能是通过反射调用 doStuff() 的语法糖,或者它可以以不同的方式实现。Foo 可以是任何类型。如果 foo 没有 doStuff() 方法,这将引发运行时异常。关键是,当您需要时,即大多数时候,您将获得更严格的预先指定的接口范例(性能、错误检查)的好处。同时,您将拥有一个简单、干净的后门来避免打字,这将允许您干净地进行初始设计中未预见到的更改,而无需进行大量重构。此外,它可能会 100% 向后兼容,并与现有的语言结构完美结合。我认为这可能有助于减少过度设计的以防万一的编程风格,这种风格会导致混乱、混乱的 API。

0 投票
3 回答
6935 浏览

python - 是否有一种“单线”方法可以按排序顺序从字典中获取键列表?

listsort()方法是一个修饰函数,它返回None.

因此,如果我想遍历字典中的所有键,我不能这样做:

相反,我必须:

有没有一种很好的方法可以按排序顺序遍历这些键,而不必将其分解为多个步骤?

0 投票
15 回答
4774 浏览

java - 我想要在我的 Java 中有更多的语法糖!

例如在 C# 中属性的语法糖:

或者干脆

我在 java 中缺少逐字字符串... @"C:\My Documents\" 而不是 "C:\\My Documents\\"

你同意 Java 需要更多的“糖”吗?任何人都知道下一个 Java 版本中会出现糖吗?

0 投票
4 回答
678 浏览

c# - 如果 with 关键字不好(对于 C#),这是一个不错的选择吗?


0 投票
14 回答
16708 浏览

python - 从函数返回多个值的优雅方法

似乎在大多数主流编程语言中,从一个函数返回多个值是一件非常尴尬的事情。

典型的解决方案是创建一个结构或一个普通的旧数据并返回它,或者通过引用或指针传递至少一些参数而不是返回它们。

使用引用/指针非常尴尬,因为它依赖于副作用并且意味着您还有另一个参数要传递。

恕我直言,类/结构解决方案也很尴尬,因为您最终会得到一百万个仅用于从函数返回值的小类/结构,从而产生不必要的混乱和冗长。

此外,很多时候总是需要一个返回值,其余的仅在某些情况下由调用者使用。这些解决方案都不允许调用者忽略不需要的返回类型。

我所知道的可以优雅地处理多个返回值的一种语言是 Python。对于那些不熟悉的人,它使用元组解包:

有没有人对这个问题有任何其他好的解决方案?欢迎使用除 Python 之外的现有主流语言和您在非主流语言中看到的语言级解决方案的两种习语。

0 投票
9 回答
37410 浏览

c# - C# 属性和 ref 参数,为什么不加糖?

我在使用 C# 时遇到了这个错误消息

属性或索引器不能作为 out 或 ref 参数传递

我知道是什么原因造成的,并快速解决了创建正确类型的局部变量,使用它作为out/ref参数调用函数,然后将其分配回属性:

变成

显然,如果属性不支持在当前上下文中获取和设置,这将失败。

为什么 C# 不为我这样做?


我能想到这可能会导致问题的唯一情况是:

  • 穿线
  • 例外

对于线程,转换会影响写入发生的时间(在函数调用之后与函数调用中),但我宁愿怀疑任何依赖于此的代码在中断时都会得到很少的同情。

对于例外情况,关注点是;如果函数分配给几个ref参数之一而不是 throws 会发生什么?任何微不足道的解决方案都会导致分配所有参数或不分配参数,什么时候应该分配,有些不应该分配。同样,我不认为这会被支持使用该语言。


注意:我了解生成此错误消息的机制。我正在寻找的是为什么 C# 不会自动实现微不足道的解决方法的基本原理。

0 投票
11 回答
7075 浏览

language-design - 为什么语法糖有时被认为是一件坏事?

恕我直言,语法糖通常使程序比从一组非常简约的原语进行编码更具可读性和更容易理解。我真的没有看到好的,深思熟虑的语法糖的缺点。为什么有些人基本上认为语法糖充其量是多余的,最坏的情况是应该避免的?

编辑:我不想说出名字,但自从人们问起,似乎大多数 C++ 和 Java 程序员,例如,坦率地说,他们并不关心他们的语言完全缺乏语法糖。在很多情况下,他们并不一定只是喜欢语言的其他部分就足以使缺少糖分值得权衡,而是他们真的不在乎。此外,Lisp 程序员似乎几乎为他们语言的奇怪符号感到自豪(我不会称它为语法,因为它在技术上不是),尽管在这种情况下,它更容易理解,因为它允许 Lisp 的元编程工具与它们一样强大。