标签: syntactic-sugar

带尖括号的方法(<>)

是否可以在方法名称中使用尖括号,例如:

class Foo(ind1:Int,ind2:Int){...}
var v = new Foo(1,2)
v(1) = 3 //updates ind1
v<1> = 4 //updates ind2
Run Code Online (Sandbox Code Playgroud)

真实的情况显然比这更复杂!!我试图提供一个方便的用户界面.

syntax dsl scala syntactic-sugar

14
推荐指数
2
解决办法
2066
查看次数

为什么Syntactic Sugar有时被认为是坏事?

句法糖,恕我直言,通常使程序比从极简主义的原语集编码更易读,更容易理解.我并没有真正看到好的,经过深思熟虑的语法糖的缺点.为什么有些人基本上认为语法糖最多是多余的,最糟糕的是要避免什么?

编辑:我不想命名,但是因为人们问,似乎大多数C++和Java程序员,坦率地说,他们并不关心他们的语言完全没有语法糖.在很多情况下,他们不一定非常喜欢这种语言的其他部分足以使缺糖值得权衡,这是因为他们真的不在乎.此外,Lisp程序员似乎对他们语言的奇怪符号感到骄傲(我不会将其称为语法,因为它在技术上并非如此),尽管在这种情况下,它更容易理解,因为它允许Lisp的元编程工具像它们一样强大.

language-design syntactic-sugar

13
推荐指数
5
解决办法
6023
查看次数

Java语法糖

我今天遇到了这段代码,我不知道它是如何工作的.我知道如何制作匿名类,但我习惯于看到一个方法签名,而不仅仅是一对大括号.这些大括号之间的代码是否放入静态块?它会进入构造函数吗?还是完全不同的东西?

conext.checking(new Expectations() {
    { // <- what does this pair of braces do?
        oneOf(alarm).getAttackAlarm(null);
    }
});
Run Code Online (Sandbox Code Playgroud)

java syntactic-sugar

13
推荐指数
1
解决办法
6075
查看次数

Haskell desugaring的任何优势?

当我使用Functors,Monads和其他Hakell构造时,如果我的代码不仅仅是几行,我更喜欢使用一些语法糖,如do-notation.这使我更容易遵循代码流程.除了风格偏好之外,使用脱糖块而不是含糖替代品是否有任何真正的优势?

monads haskell syntactic-sugar functor applicative

13
推荐指数
2
解决办法
279
查看次数

Python断言 - 改进了对失败的反省?

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

$ python -c "assert 6-(3*2)"
[...]
AssertionError
Run Code Online (Sandbox Code Playgroud)

assert在Python中有更好的实现更加花哨吗?它不得在执行时引入额外的开销(断言失败时除外)..如果使用-Oflag,则必须关闭.

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

python debugging assert syntactic-sugar

12
推荐指数
3
解决办法
4554
查看次数

句法糖与特征

在C#(和Java)中,字符串只是一个具有存储长度的char数组,并且添加了一些方法.同样地,(参考与值之外的东西除外)对象只不过是带有继承和接口的美化结构.

在一个层面上,这些新增功能感觉就像是清晰的功能和增强功能.在另一个层面上,他们觉得从"语法糖"状态的边缘升级.

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

transistor
elementary logic gate
compound gate
  |         |
 ALU    flip-flop
   |    |       |
   | register  RAM
   | |
   CPU
   microcode
   assembly
   C
   C++
   | |
MSIL JavaScript
C#   jQuery
Run Code Online (Sandbox Code Playgroud)

很多时候,任何单一的抽象层看起来都像语法糖,但是多层分离感觉彼此之间的距离非常小.

你怎么知道什么东西停止了语法糖并开始成为一个真正的功能?

language-agnostic syntax syntactic-sugar

12
推荐指数
4
解决办法
991
查看次数

C#的类似Python的字典声明?

在Python中,可以做到:

d = {1 : 'Hello', 2 : 'World'}
Run Code Online (Sandbox Code Playgroud)

在C#中,它更详细:

Dictionary<int, string> d = new Dictionary<int, string>();
d.Add(1, 'Hello');
d.Add(2, 'World');
Run Code Online (Sandbox Code Playgroud)

我怎么能让这个更简洁?

c# syntax dictionary syntactic-sugar

12
推荐指数
1
解决办法
3954
查看次数

用于查询Python列表的语法糖首先出现哪个元素

我有很多元素的清单.

我关心它的两个元素,ab.

我不知道列表的顺序,也不想对它进行排序.

是否有一个很好的单线,True如果a之前发生会返回,否则会b错误?

python list syntactic-sugar

12
推荐指数
4
解决办法
414
查看次数

什么时候+ = b在Scala中成为a = a + b?

斯卡拉有时候只是脱毒

a += b
Run Code Online (Sandbox Code Playgroud)

a = a + b
Run Code Online (Sandbox Code Playgroud)

但不总是.例如,一些可变集合定义了一个+=方法,而不是它变成了一个方法

a.+=(b)
Run Code Online (Sandbox Code Playgroud)

这是这种行为吗?

  1. 完全取决于是否有合适的+=方法a?(包括有这种行为的其他例子吗?)
  2. 独立于对象是val还是var?

相关的例子

改编自Scala中的编程

var s = Set("a", "b")
s += "c"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,第二行代码s += "c"基本上是简写:

s = s + "c"
Run Code Online (Sandbox Code Playgroud)

scala syntactic-sugar assignment-operator

12
推荐指数
1
解决办法
136
查看次数

C# 中没有类型有什么新功能?

C# 中没有类型有什么新功能?

我在工作中遇到如下代码:

throw new("some string goes here");

这是new("some string goes here")在 C# 中创建字符串的方法还是其他方法?

c# syntactic-sugar new-operator

12
推荐指数
2
解决办法
4208
查看次数