什么是语法糖,什么是:语法糖,语法盐,语法糖精

2020-11-25 16:23:15 字数 6213 阅读 5781

1楼:匿名用户

语法糖(syntactic sugar)

也译为糖衣语法

是由英国计算机科学家彼得·约翰·兰达(peter j. landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。

通常来说使用语法糖能够增加程序的可读性,从而减少程序**出错的机会。

举个例子:

在c语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i*数组a第二维的长度)+j),由此可见语法糖不是“现代语言”独有,这种写法简洁明了,容易被人理解。

2楼:七颜

就是把库做到语言的程度

很傻很天真的问题:什么是语法糖

3楼:刀哥专属

语法糖(syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(peter j. landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序**出错的机会。

什么是:语法糖,语法盐,语法糖精

4楼:change双鱼

语法糖 syntactic sugar

指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。

语法盐 syntactic salt

指的是让写出坏**更难的语法特性。这些特性强迫程序员做出一些基本不用于描述程序行为,而是用来证明他们知道自己在做什么的额外举动。

语法糖精 syntactic saccharine指的是未能让编程更加方便的附加语法。

看看c#6.0中那些语法糖都干了些什么(终结

5楼:匿名用户

yield 语句只能出现在 iterator 块中,这种块可作为方法、运算符或访问器的主体实现。 这类方法、运算符或访问器的体受以下约束的控制。不允许不安全块。

方法、运算符或访问器的参数不能是 ref 或 out。 yield return 语句不能放在 try-catch 块中的任何位置。 该语句可放在后跟 finally 块的 try 块中。

yield break 语句可放在 try 块或 catch 块中,但不能放在 finally 块中。 yield 语句不能出现在匿名方法中。 有关更多信息,请参见 匿名方法c# 编程指南。

当和 expression 一起使用时,yield return 语句不能出现在 catch 块中或含有一个或多个 catch 子句的try 块中。 有关更多信息,请参见 异常处理语句c# 参考。

lua语言中的"."和":"有什么不同?

6楼:错落二人组

:是个语法糖,调用的函数会自动传递参数self即local a =

function a.foo(self, a)self.x = a

endfunction a:foo2(a)self.x = a

end--调用时:

a.foo(a, 2)

a.foo2(2)

上述两个操作是等价的,用:时就省去了定义和调用时需要额外添加self用来指代自身的麻烦

用cocos2d么,cc是cocos2d库的对象名称

java中语句super什么意思

7楼:飞鹤y丨ovo丨

要说super就先要说this。

"this",作为一个特殊的关键字,它的规则如下:

1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。

2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类c本身;它有动态类型,就是当前这个对象的类型。

你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个c类型的final变量可以出现的地方,它就可以出现。

"super"。它和"this"类似,但是也有不同的地方。

1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。

2。可以在一个类的非static成员内部使用。比如super.method()。

但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是一个变量。

为什么不是?因为如果是就坏了。java里面有一个金科玉律:任何public非static函数的调用都是多态的。

所以,如果super是个变量,也指向当前对象,那么,不管super的静态类型是什么super.method()必然调用的是子类的那个版本,而不会是我们期望的,静态地选择父类的那个版本。

所以,你只要把super.***看成一个特殊的语法,比如理解为“super::***”就好了。

既然super不是一个变量,那么不能把它象一个普通变量那样"==",或者传递给某个函数就看起来很正常了,是么?何况,你其实也用不着它,有this你这些要求就都可以办到了。

3。super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法

8楼:糜春求绚

调用父类的paint***ponent函数

9楼:泰赋行智敏

因为这个方法paint***ponent将超类的paint***ponent方法重写了。当要引用超类的paint***ponent方法时需spuer来调用超类的方法

10楼:丙典淦宛菡

调用它的父类的paint***ponent函数,如果不写super,调用的是子类的paint***ponent函数

c#里的using语句是什么意思

11楼:依岚软件

使用using语句最终生成的其实是一个try, finally**块,在finally**块里释放资源。要求是:为 using 语句提供的对象必须实现 idisposable 接口。

此接口提供了 dispose 方法,该方法将释放此对象的资源。

你的问题其实可以这样解释:

在using中其实打开了一个数据库连接,然后从数据库中读取了某些数据,最后不管读取是否成功,都应该把这个数据库连接关闭掉。

传统的写法应该是在try块里打开连接并且读取,在finally块中把连接关闭掉,而由于你的sdr对象实现了idisposable接口,所以c#允许你用using语句来代替这种写法,其实这就是一种语法糖,一种简便写法而已。

当程序运行完这个**块(超出大括号的范围)后,sdr就会被自动关闭掉。

12楼:华华兮

就对于你上面这句话而言,因为数据库open之后,最后一定要close,即在**最后写conn.close();但是用了using语句后,当执行完using语句中的**,退出using语句时,close()方法会自动帮你执行,把数据库连接关闭。方便了**的书写和以免程序员忘记关掉数据库连接。

13楼:匿名用户

using 引入名称空间或者使用非托管资源其中引入名称空间通俗的说

就是我们程序中最顶部的**

如:using system;

楼主取的例子应该是使用非托管资源,

我们一般使用的是托管资源,不用后系统会自动释放内存,而有些我们自己定义的非托管资源就需要我们手动的去释放空间

14楼:匿名用户

c# 程序员参考

using 语句请参见

c# 关键字 | using 指令 | 实现 finalize 和 dispose 以清理非托管资源

using 语句定义一个范围,在此范围的末尾将处理对象。

using (expression | type identifier = initializer) statement

其中:expression

希望在退出 using 语句时调用 dispose 的表达式。

type

identifier 的类型。

identifier

type 类型的名称或标识符。定义一个以上 type 类型的 identifier 是可以的。在每一个 identifier = initializer 的前边都有一个逗号。

initializer

创建对象的表达式。

statement

嵌入的语句或要执行的语句。

备注在 using 语句中创建一个实例,确保退出 using 语句时在对象上调用 dispose。当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句。

实例化的对象必须实现 system.idisposable 接口。

15楼:匿名用户

2楼找到资料对的,你要知道像文件,数据库连接这些是非托管资源.***不会自动去释放他们,一般需要你手动关闭。当使用using时,如果对象实现了system.

idisposable接口,他就会在使用完释放掉。

16楼:朝夕相处

1.using语句:定义一个范围,将在此范围之外释放一个或多个对象。

2.语法:

using (font font1 = new font("arial", 10.0f))

3.c# 通过 .*** framework 公共语言运行库 (clr) 自动释放用于存储不再需要的对象的内存。

内存的释放具有不确定性;一旦 clr 决定执行垃圾**,就会释放内存。但是,通常最好尽快释放诸如文件句柄和网络连接这样的有限资源。

4.using 语句允许程序员指定使用资源的对象应当何时释放资源。为 using 语句提供的对象必须实现 idisposable接口。

此接口提供了 dispose 方法,该方法将释放此对象的资源。

5.可以在到达 using 语句的末尾时,或者在该语句结束之前引发了异常并且控制权离开语句块时,退出 using 语句。

17楼:匿名用户

相当于局部变量,在{}的对象会自动释放

不用调用相关的dispose()方法

留步帮忙下这样定义是个什么方法 public static t cloneobject(this t obj) where t:class{}

18楼:匿名用户

这个方法涉及到两个知识点:

1)泛型

2)扩展方法

先抛开“扩展方法”不提,这个方法属于“泛型方法”(注意:不是泛型类)。

以下为简单示例:

public static t tostring(t obj)

假设调用:

tostring(2);

等效于:

public static int tostring(int obj) // 原来的 t 被替换为 int

假设调用

tostring("mystring");

等效于:

public static string tostring(string obj) // 原来的 t 被替换为 string

通过以上例子可以看出,泛型参数 t 其实就是一个“类型占位符”,在编译时或运行时动态的替换为实际数据类型。我想你现在可以大致理解泛型方法了吧?

最后备注:where t : class 表示约束泛型参数 t 必须是引用类型,不能是值类型。

扩展方法:

是指在某个类型上,扩展出一个方法(属于编译技术,俗称:语法糖)。

cloneobject(this t obj) 意思,是指在类型 t 上扩展一个 cloneobject 方法。

这个 t 是泛型参数:

1)如果泛型参数是 string 则表示在 string 上扩展 cloneobject 方法

2)如果泛型参数是 arraylist 则表示在 arraylist 上扩展 cloneobject 方法

3)如果泛型参数是其它 ***xx 类,则表示在 ***xx 类上扩展 cloneobject 方法

以上为原理解释,实际运行效果,如一楼“风声正乱”所述,此处不再赘述。

python有哪些好玩的语法糖,Python 有哪些好玩的语法糖

1楼 匿名用户 装饰器就是一个很有用的语法糖啊 2楼 匿名用户 1 无输入参数 2 不能显式return 3 块中def定义的函数并不作为这个 假 函数的闭包! 3楼 匿名用户 keep looking don t settle python 有哪些好玩的语法糖 4楼 天天不看 当然是函数式那一套黑...

什么是语法手段,什么是语法手段,语法结构,1.什么是语法

1楼 匿名用户 语法手段是表达语法意义的形式标志或物质手段的类型,是从语法形式中概括出来的。常见的语法手段有 1 选词 进入结构的词首先要在语法的词类中选择。如 读书 之所以是述宾结构,是从 读 和 书 的词类确定的。 2 词序 例如汉语主语在前,谓语在后 日语的宾语在后,主语在前。 3 虚词 例如...

什么是词汇的语法意义,什么是词的语法意义?

1楼 安静爱你宝宝 语法意义就是语法形式所表示的内涵,这是从词的功能划分出来的一个类别,与之相对应的是词的词汇意义。实词既有词汇意义,也有语法意义,能充当句法成分 虚词没有词汇意义,只有语法意义,不能充当句法成分。 例如,动词 吃 打 走 坐 既有具体的含义,又能直接在句子中做谓语中心语,而像 的 ...