图书馆与语言扩展

Nab*_*egh 5 programming-languages scala

图书馆和语言扩展有什么区别?特别是在Scala中.

Dan*_*ton 15

这是Scala语言规范.如果您可以使用本规范描述的语言编写它,那么它就是一个.如果您对本文档描述的语言进行了无法用语言本身编写的语言的更改,那么它就是语言扩展名.


Adr*_*tti 6

这对Scala和Java都有效,可以定义为:

在计算机科学中,库是用于开发软件的资源的集合.这些可能包括预先编写的代码和子例程,类,值或类型规范.

这意味着(我知道,我简化了很多)库是一例程,您将在代码中使用它们来实现算法.它们可以让您一次又一次地编写相同的代码(例如,每次必须将字符串打印到控制台时,您都不需要重新发明轮子).

一个语言的扩展是不是代码,你会打电话给(或使用)直接从您的代码,但东西会改变你你的程序.它可能会改变(通常也会)语言本身的语法,并且通常是编译器的插件.添加到Java语言的许多功能都是扩展(例如泛型).

例如,Session-Scala是由以下两者组成的扩展:

  • 用于管理并行编程的库(可以直接从代码中调用的代码).
  • 语言扩展:让你写更清晰的代码(有时什么叫语法糖),它改变了语言的语法,使利用它的库函数更容易(我应该说是不错的?)

有关示例,请查看此页面.

也就是说,通常使用Scala语言扩展并不是真正需要的(因为它的语法非常容易编写,例如,比.NET语言更容易编写).我想到的第一件事就是中缀运算符,但总的来说,它所有的方法调用语法都可以很容易地将它用作没有DSL的DSL.