01 Scala 导言

  • 欢迎来到Scala之旅
  • Scala是什么?
  • Scala是面向对象的
  • Scala是函数式的
  • Scala是静态类型的
  • Scala是可扩展的
  • Scala的互操作性

欢迎来到Scala之旅

本次 Scala 之旅教程包含了对于大多数 Scala 特性的简单介绍。主要针对 Scala 这门语言的初学者。
这是个简化的教程,如果希望得到完整的话,可以考虑购买书籍或者参考其他资源。

Scala是什么?

Scala是一门现代的多范式语言,志在以简洁、优雅及类型安全的方式来表达常用的编程模型。它平滑地集成了面向对象和函数式语言的特性。

Scala是面向对象的

鉴于一切值都是对象,可以说Scala是一门纯面向对象的语言。对象的类型和行为是由类和特质来描述的。类可以由子类化和一种灵活的、基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。

Scala是函数式的

鉴于一切函数都是值,又可以说Scala是一门函数式语言。Scala为定义匿名函数提供了轻量级的语法,支持高阶函数,允许函数嵌套及柯里化。Scala的样例类和内置支持的模式匹配代数模型在许多函数式编程语言中都被使用。对于那些并非类的成员函数,单例对象提供了便捷的方式去组织它们。

此外,通过对提取器的一般扩展,Scala的模式匹配概念使用了right-ignoring序列模式,自然地延伸到XML数据的处理。其中,for表达式对于构建查询很有用。这些特性使得Scala成为开发web服务等程序的理想选择。

Scala是静态类型的

Scala配备了一个拥有强大表达能力的类型系统,它可以静态地强制以安全、一致的方式使用抽象。典型来说,这个类型系统支持:

  • 泛型类
  • 型变注解
  • 上、下类型边界
  • 作为对象成员的内部类和类型抽象
  • 复合类型
  • 显式类型的自我引用
  • 隐式函数和隐式转化
  • 多态方法

类型推断让用户不需要标明额外的类型信息。这些特性结合起来为安全可重用的编程抽象以及类型安全的扩展提供了强大的基础。

Scala是可扩展的

在实践中,特定领域应用的发展往往需要特定领域的语言扩展。Scala提供了一种语言机制的独特组合方式,使得可以方便地以库的形式添加新的语言结构。
很多场景下,这些扩展可以不通过类似宏(macros)的元编程工具完成。例如:

  • 隐式类允许给已有的类型添加扩展方法
  • 字符串插值可以让用户使用自定义的插值器进行扩展

Scala的互操作性

Scala设计的目标是与流行的Java运行环境(JRE)进行良好的互操作,特别是与主流的面向对象编程语言——Java的互操作尽可能的平滑。Java的最新特性如函数接口(SAMs)、lambda表达式、注解及泛型类 在Scala中都有类似的实现。

另外有些Java中并没有的特性,如缺省参数值和带名字的参数等,也是尽可能地向Java靠拢。Scala拥有类似Java的编译模型(独立编译、动态类加载),且允许使用已有的成千上万的高质量类库。

01 Spark组件 —— Scala导言相关推荐

  1. Kudo介绍 + Spark\Python\Scala开发Kudu应用程序

    前半部分文章摘自:http://blog.csdn.net/a1043498776/article/details/72681890 Kudu的背景 Hadoop中有很多组件,为了实现复杂的功能通常都 ...

  2. spark用scala读取hive表数据(不同版本区别)

    spark用scala读取hive表数据 spark1.6写法: val conf = new SparkConf()      val sc = new SparkContext(conf)     ...

  3. Spark记录-Scala异常与处理

    Spark记录-Scala异常与处理 参考文章: (1)Spark记录-Scala异常与处理 (2)https://www.cnblogs.com/xinfang520/p/7728869.html ...

  4. spark(scala) shell 里面输入多行代码

    spark(scala版本) shell 里面输入多行代码 但如果出现这种情况(如下图所示) 建议大家还是在linux系统中,利用脚本实现代码的运行.具体步骤如下: 进入Linux系统终端,输入相关代 ...

  5. 华为云DAYU使用Spark组件开发的学习使用心得

    自己学习的心得,如有错误欢迎指正- 简单认识 首先华为DAYU平台中有两套Spark组件,一个是DLI Spark另一个是MRS Spark. DLI是数据湖探索服务,是完全兼容Apache Spar ...

  6. 【Spark】scala基础入门

    文章目录 零.IDEA的scala环境配置 0.1 spark和scala之间的关系 0.2 编写项目 (0)创建项目 (1)配置pom.xml文件: (2)配置对应环境 (3)测试代码 (4)控制台 ...

  7. Spark集群搭建【Spark+Hadoop+Scala+Zookeeper】

    1.安装Linux 需要:3台CentOS7虚拟机 IP:192.168.245.130,192.168.245.131,192.168.245.132(类似,尽量保持连续,方便记忆) 注意: 3台虚 ...

  8. Spark+kafka+scala入门

    1. Scala编程思想 (1) val常量,var变量,在声明变量的时候不需要说明具体的类型,类似于javascript语言 (2) def表示声明函数或方法,其中参数名颠倒写,即变量名在前:类型, ...

  9. spark(3) - scala独立编程

    >>非集成: 环境需要 * spark 2.4.0 * scala 2.11.12 * sbt (打包) 开发过程 1.shell命令下创建项目目录结构 *****/ project / ...

最新文章

  1. repeater用法一步一步详讲,用来绑定和显示数据信息
  2. Silverlight C# 游戏开发:资源的处理,图像算法(二)
  3. 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》
  4. android文件导出错误—— failed to pull a selection
  5. 为什么说嵌入式开发比单片机要难很多?工程师谈谈自己的感悟
  6. python关联分析sklearn_Python3利用pandas,sklearn进行关联度分析以及预测的demo
  7. java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具
  8. eventbus多个订阅_番石榴的EventBus –简单的发布者/订阅者
  9. 战神笔记本电脑自带access吗_书评:6本二次元小说,每一本都很有想象力,你都读过吗?...
  10. 学习笔记 10.28
  11. Linux系统的查看系统信息和常用监控命令
  12. linux终端输出图形_Linux进程关系
  13. java购物系统需求分析_java网上购物系统需求分析报告.doc
  14. px和毫米之间的转换
  15. 设置iSCSI的发起程序(客户端)(三)
  16. linux批量追加内容,利用sed的追加功能批量在文件中追加内容
  17. 缺失值处理(Imputation)
  18. SpringCloud整合Sa-Token登录认证+Gateway网关拦截
  19. Too many re-renders. React limits the number of renders to prevent an infinite loop
  20. 0到新浪微博综搜榜第一

热门文章

  1. 计算机培训word,最新计算机培训word资料.pptx
  2. 通过流量分析,通过xposed hook#2
  3. 《别看了,你学不会的》——Redis原理与实战(一)
  4. Java GUI编写一个简单的抽奖机
  5. jfinal获取mysql_jfinal 调用mysql结果集-问答-阿里云开发者社区-阿里云
  6. 蚂蚁集团CEO宣布辞职,发生了什么?
  7. 商业模式与盈利模式的区别
  8. MCDF实验_lab0(0)
  9. 图神经网络的池化操作
  10. GPT-2 论文翻译