问题标签 [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 投票
7 回答
7864 浏览

python - Python 断言——改进了对失败的自省?

这是一个相当无用的断言错误;它不会告诉所涉及的表达式的值(假设使用的常量实际上是变量名):

Python中有更好的assert实现吗?-O它不能在执行过程中引入额外的开销(除非断言失败)......并且如果使用标志,则必须关闭。

编辑:我知道断言的第二个参数是一个字符串。我不想写一个 .. 因为它被编码在被断言的表达式中。干燥(不要重复自己)。

0 投票
9 回答
1384 浏览

language-agnostic - 语法糖与功能

在 C#(和 Java)中,字符串只不过是一个具有存储长度和附加一些方法的 char 数组。同样,(除了引用与值之外)对象只不过是添加了继承和接口的美化结构。

在一个层面上,这些添加感觉像是对自己的清晰功能和增强。在另一个层面上,它们感觉像是从“句法糖”的地位的边缘升级。

为了进一步了解这个想法,请考虑(我可能有一些细节错误,但重点仍然存在):

很多时候,任何单一的抽象层看起来很像语法糖,但多层分离感觉彼此非常分离。

你怎么知道什么时候不再是语法糖而开始成为真正的功能?

0 投票
8 回答
27155 浏览

java - Java 中的 WITH 语句

在 VB.NET 中有 WITH 命令可以让您省略对象名称而只访问所需的方法和属性。例如:

Java中有这样的语法吗?

谢谢!

0 投票
3 回答
1676 浏览

php - PHP 的 array() 的缩写

我不知道你怎么样,但我不太喜欢用 PHP 构造数组的方式。我有这种感觉,我array过于频繁地使用关键字方式,并且鉴于地图的有用性,array($k => $v)或者例如array($k1=>array($k2=>$v))太长了。(而且,最近学习了JS的做法,现在真的很羡慕)

我能想到的最好的解决方法是:

...但他们不允许使用=>运算符。

还有其他想法吗?

0 投票
4 回答
2329 浏览

c# - 如何将管道代码注入/生成用属性装饰的方法?

我正在阅读一些关于缓存和记忆化以及如何使用委托和泛型轻松实现它的文章。语法非常简单,实现起来也出奇地容易,但我只是觉得由于重复性,应该可以基于属性生成代码,而不必一遍又一遍地编写相同的管道代码。

假设我们从默认示例开始:

然后记住这个:

我想,一旦找到与 Memoize 扩展方法之一匹配的标记方法,只制作一个吐出此代码的代码生成器不是更简单。因此,我可以添加一个属性,而不是编写这个管道代码:

老实说,我知道这看起来更像是应该由预处理器转换而不是实际代码生成的编译器糖,但我的问题是:

  1. 您认为在 ac# 源文件中查找具有给定属性的方法、解析参数类型和返回类型并生成与此指纹匹配的委托的最佳方法是什么
  2. 在不实际覆盖我的代码的情况下,将其集成到构建过程中的最佳方法是什么。在将源文件传递给编译器之前,是否可以对源文件进行一些预处理?

感谢您的任何想法。

更新

我已经按照 Shay 的建议研究了 Postsharp 库,它似乎非常适合处理事务管理、跟踪或安全等非时间关键型应用程序的工作。

然而,当在时间紧迫的上下文中使用它时,它被证明比委托慢很多。每次实现对 Fibonacci 示例进行 100 万次迭代会导致运行时间降低 80 倍。(每次调用 0.012ms postsharp vs 0.00015ms delegate)

但老实说,在我打算使用它的上下文中,结果是完全可以接受的。感谢您的回复!

更新2

显然 Postsharp 的作者正在努力开发2.0 版本,其中包括在生成的代码和编译时间方面的性能改进。

0 投票
2 回答
722 浏览

scala - Scala 中编译时对象创建的语法糖

可以说我有

我希望用户能够使用自己为 fooFn 定义的主体快速声明 fooTrait 的新实例。理想情况下,我想要类似的东西

去工作。但是,我不能只做

因为这使用了闭包,因此当程序多次运行时会产生不同的对象。我真正需要的是能够获得 newFoo 返回的对象的 classOf,然后让它可以在不同的机器上构造。我该怎么办?

如果您对用例感兴趣,我正在尝试为 Hadoop 编写一个 Scala 包装器,它允许您执行

中间的东西需要变成一个实现特定接口的类,然后可以只从类名在不同的机器上实例化(执行同一个jar文件)。

请注意,Scala 使用将 (x:Int) => x+5 转换为 Function1 实例的语法糖做了正确的事情。我的问题是我是否可以在不破解 Scala 内部结构的情况下复制它。如果这是 lisp(就像我习惯的那样),这将是一个微不足道的编译时宏 ... :sniff:

0 投票
3 回答
6171 浏览

sql-server - sql:在 v1 和 v2 之间

SQL Server 上的 BETWEEN 查询中 v1 和 v2 的顺序是否存在差异?

如果 v1 大于 v2,目前我没有得到任何结果。这是唯一的语法糖吗

还是真的需要两者之间的所有值?根据我目前的观察,我想这是第一种情况。

0 投票
13 回答
7061 浏览

c# - C# 有多大用处??操作员?

所以我对这个很感兴趣??运营商,但仍然无法使用它。当我做类似的事情时,我通常会考虑它:

如果 someObject 有效并且 someMember 为空,我可以这样做

但是当 someObject 为空时,我几乎总是会遇到问题,并且??并没有比我自己做空检查更干净。

大家找到什么用处了??在实际情况下?

0 投票
5 回答
1042 浏览

javascript - JavaScript 等价于 Python 的 __setitem__

JavaScript 没有 __setitem__ ,这个例子显然行不通。

在 python 中__setitem__ 的工作方式如下:

是否可以在 JavaScript 中实现 __setitem__ 行为?所有棘手的解决方法都会有所帮助。

0 投票
1 回答
252 浏览

javascript - Brendan Eich 在谈到向 JavaScript 添加糖和宏时是什么意思?

我目前正在阅读 Coders at Work,我正在采访 Brendan Eich 的章节。至少可以说,与前面的章节相比,它有点密集。在第 144 页左右,他谈到了在 JavaScript 中添加糖和宏。这些术语是什么意思?为什么反对添加它们?