在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/