Scala简介
注:Scala系列文章参考《Scala编程》和《快学Scala》。仅用于个人学习记录,侵权删。
1.Scala是什么?
- Scala 是一门综合了面向对象和函数式编程概念的静态类型的编程语言。运行在标准的 Java 平台上,可以与所有 Java 类库无缝协作。
- Scala是面向对象的。
- 它对面向对象的实现是纯的:每个值都是对象,每个操作都是方法调用。比如 1+2 ,实际上是在调用 Int 类里定义的名+的方法,1.+(2)
- Scala 是函数式的
- 函数式编程以两大核心理念为指导。第一个理念是函数是一等( first-class )的值。在函数式编程语言中,函数值的地位跟整数、字符串等是相同的。可以将函数作为参数传递给其他函数,作为返回值返回它们,或者将它们保存在变量里。
- 函数式编程的第二个核心理念是程序中的操作应该将输入值映射成输出值,而不是当场( in place )修改数据。
- 函数式编程的这个核心理念的另一种表述是方法不应该有副作用 (side-effect) 。方法只能通过接收入参和返回结果这两种方式与外部环境通信 。
- Scala是面向对象的。
2. why Scala?
最重要的四点:兼容性、精简性、高级抽象和静态类型
- Scala 是兼容的
- scala设计目标就是与Java 的无缝互调。Scala 程序会被编译成 JVM 字节码,它们的运行期性能通常也和 Java 程序相当。事实上 ,几乎所有的 Scala 代码都重度使用 Java类库。Scala 不仅仅是复用 Java 的类型,也会对 Java 原生的类型进行“再包装”,让它们更好用。
- Scala 是精简的
- Scala 编写的程序通常都比较短。很多 Scala 程序员都表示,跟 Java 相比,代码行数相差可达十倍之多。Scala的类型推断是让代码精简的另一个帮手 重复的类型信息可以去掉,这样代码就更紧凑可读。不过可能最重要的因素是有些代码根本不用写,类库都帮你写好了,Scala提供了大量的工具来定义功能强大的类库,让你可以捕获那些公共的行为,并将它们抽象出来。
- Scala是高级的
- Scala 给你的帮助在于提升接口设计的抽象级别,让你更好的管理复杂度。另一方面, Scala 的函数字面量非常轻,因此经常被使用。随着你对 Scala了解的深人,你会找到越来越多的机会定义你自己的控制抽象。
- Scala 是静态类型的
- Scala 跟其他语言相比,一个重要的特点是它拥有非常先进的静态类型系统,Scala 不仅拥有跟 Java 类似的允许嵌套类的类型系统,它还允许你用泛型(generics) 来对类型进行参数化(parameterize),用**交集(intersection)来组合类型,以及用抽象类型(abstracttype)**来隐藏类型的细节。这些特性为我们构建和编写新的类型打下了坚实的基础,让我们可以设计出既安全又好用的接。
- Scala很好地解决了静态类型的两个常见的痛点:通过类型推断规避了过于唠唆的
问题,通过模式匹配以及其他编写和组合类型的新方式避免了死板。