库和语言扩展有什么区别?特别是在 Scala 中。
问问题
703 次
3 回答
15
这是 Scala 语言规范。如果你能用本规范描述的语言编写它,那么它就是一个库。如果您对本文档描述的语言进行了无法用该语言本身编写的更改,则它是一种语言扩展。
于 2012-05-07T09:16:36.900 回答
7
这对 Scala 和 Java 都有效,库可以定义为:
在计算机科学中,图书馆是用于开发软件的资源的集合。这些可能包括预先编写的代码和子例程、类、值或类型规范。
这意味着(我知道,我简化了很多)库是您将在代码中用于实现算法的例程的集合。它们使您无需一次又一次地编写相同的代码(例如,每次必须将字符串打印到控制台时,您都不需要重新发明轮子)。
语言扩展不是您将直接从代码中调用(或使用)的代码,而是会改变您编写程序的方式的代码。它可能会改变(而且通常会改变)语言本身的语法,而且通常它是编译器的插件。Java 语言中添加的许多特性都是扩展(例如泛型)。
例如 Session-Scala 是由两者组成的扩展:
- 一个管理并行编程的库(您可以直接从代码中调用的代码)。
- 语言扩展:为了使您编写的代码更清晰(有时称为语法糖),它改变了语言的语法,使其库函数的使用更容易(我应该说好听吗?)
举个例子看看这个页面。
也就是说,通常使用 Scala 并不真正需要语言扩展(即使它很容易编写,例如比 .NET 语言更容易),因为它的语法。我想到的第一件事是中缀运算符,但总的来说,它用于方法调用的所有语法都使一切都变得简单,无需 DSL 即可将其用作 DSL。
于 2012-05-07T08:25:11.677 回答