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

从某种程度上说,这些增加本身就具有明显的功能和增强。在另一个层面上,他们感觉就像是“句法糖”地位的轻微提升。

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

transistor
elementary logic gate
compound gate
  |         |
 ALU    flip-flop
   |    |       |
   | register  RAM
   | |
   CPU
   microcode
   assembly
   C
   C++
   | |
MSIL JavaScript
C#   jQuery


很多时候,任何一个抽象层看起来都非常像语法糖,但是多层分离感觉到彼此之间很不相干。

您怎么知道什么时候不再是语法糖,而是真正的功能?

最佳答案

当它暗示一种不同的思维方式时,它实际上是功能而不是语法糖。

当您说对象实际上是带有方法和继承的美化结构时,您是对的。但是,这只是实现细节。对象允许以不同的方式思考。考虑对象时,您可以更轻松地将其与现实世界实体关联。当我们回到过去的时候,发生了同样的事情,我们从使用定位方法跳到了程序编程。在后台,处理器仍在不断地从OP过渡到OP,但是我们可以考虑采用另一种更黑盒的方式。

话虽这么说,但在极端情况下,您可以说所有东西都是语法糖,但是当其中的一些糖让您以不同的方式思考时,它就是其中的一个功能。

关于language-agnostic - 语法糖与功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1390365/

10-13 07:40