scala介绍以及使用方法和案例类型

本文介绍了Scala语言,作为Spark的基础,它融合了面向对象和函数式编程的特点,提供简洁的语法和类型安全。Scala具备与Java的无缝互操作性,支持函数式编程特性如高阶函数,以及强大的类型系统。文章详细阐述了Scala的安装、学习资源、基本类型、转换以及与其他语言的对比,并提供了在线编程实践平台和代码示例。
摘要由CSDN通过智能技术生成
  • 为什么要学习scala:为了后面要学习的spark,因为spark的源码是scala

scala是一门计算机语言,C++,C#,PHP,Java,python等,至少学两门语言,会发现,好多都是相通的;
相同点:编程的思路是一样的
不同点:语法规则不一样;
scala是在java基础进行了一次封装;
在这里插入图片描述

  • scala的优点

语法更简洁;能省代码则省代码;好处:装逼,坏处:可读性差;
函数式编程:方法的五要素;方法的参数是基本数据类型和引用类型,方法的参数是接口,目标就是想执行接口中的某一个方法;方法的参数可以是方法;(JavaScript)

scala官网:https://www.scala-lang.org/
想开发scala,需要先下载jdk(java),下载器scala的编译器,(Eclipse的插件已经集成了);但是官网推荐的IDE,idea;
在线帮助手册:https://docs.scala-lang.org/
快速开始:https://docs.scala-lang.org/getting-started.html
scala之旅:手册:https://docs.scala-lang.org/tour/tour-of-scala.html

在这里插入图片描述

**

-Scala是什么?

**
Scala是一门现代的多范式语言,志在以简洁、优雅及类型安全的方式来表达常用的编程模型。它平滑地集成了面向对象和函数式语言的特性。
Scala是面向对象的
鉴于一切值都是对象,可以说Scala是一门纯面向对象的语言。对象的类型和行为是由类和特质来描述的。类可以由子类化和一种灵活的、基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。
Scala是函数式的
鉴于一切函数都是值,又可以说Scala是一门 式语言。Scala为定义匿名函数提供了轻量级的语法,支持高阶函数,允许函数嵌套及柯里化。Scala的样例类和内置支持的模式匹配代数模型在许多函数式编程语言中都被使用。对于那些并非类的成员函数,单例对象提供了便捷的方式去组织它们。
此外,通过对提取器的一般扩展,Scala的模式匹配概念使用了right-ignoring序列模式,自然地延伸到XML数据的处理。其中,for表达式对于构建查询很有用。这些特性使得Scala成为开发web服务等程序的理想选择。
Scala是静态类型]0的
Scala配备了一个拥有强大表达能力的类型系统,它可以静态地强制以安全、一致的方式使用抽象。典型来说,这个类型系统支持:
泛型类
型变注解
上、下类型边界
作为对象成员的内部类和抽象类型
复合类型
显式类型的自我引用
隐式参数和隐式转化
多态方法
类型推断让用户不需要标明额外的类型信息。这些特性结合起来为安全可重用的编程抽象以及类型安全的扩展提供了强大的基础。(声明变量的时候不需要指定类型,弱类型语言—javascript,函数编程)
Scala是可扩展的
在实践中,特定领域应用的发展往往需要特定领域的语言扩展。Scala提供了一种语言机制的独特组合方式,使得可以方便地以库(librar–jar包)的形式添加新的语言结构。
很多场景下,这些扩展可以不通过类似宏(macros)的元编程工具完成。例如:
隐式类允许给已有的类型添加扩展方法。
字符串插值可以让用户使用自定义的插值器进行扩展。
Scala的互操作性
Scala设计的目标是与流行的Java运行环境(JRE)进行良好的互操作,特别是与主流的面向对象编程语言——Java的互操作尽可能的平滑。Java的最新特性如函数接口(SAMs)、lambda(入)表达式、注解及泛型类在Scala中都有类似的实现。
另外有些Java中并没有的特性,如缺省参数值和带名字的参数等,也是尽可能地向Java靠拢。Scala拥有类似Java的编译模型(独立编译、动态类加载),且允许使用已有的成千上万的高质量类库。

  • 在线编程
  • 可以在浏览器上使用ScalaFiddle运行Scala。
    打开https://scalafiddle.io;
    在左侧窗格中粘贴println(“Hello, world!”);
    点击”Run”按钮,输出将展现在右侧窗格中。
    这是一种简单的、零设置的方法来实践Scala的代码片段。
    在这里插入图片描述
    在这里插入图片描述
  • .类型
  • java中都有哪些类型;基本数据类型和引用类型

在这里插入图片描述
Any是所有类型的超类型,也称为顶级类 型。它定义了一些通用的方法如equals、hashCode和toString。Any有两个直接子类:AnyVal和AnyRef。(Object)
AnyVal代表值类型。有9个预定义的非空的值类型分别是:Double、Float、Long、Int、Short、Byte、Char、Unit和Boolean。Unit是不带任何意义的值类型,它仅有一个实例可以像这样声明:()。所有的函数必须有返回,所以说有时候Unit也是有用的返回类型。(基本数据类型)
AnyRef代表引用类型。所有非值类型都被定义为引用类型。在Scala中,每个用户自定义的类型都是AnyRef的子类型。如果Scala被应用在Java的运行环境中,AnyRef相当于java.lang.Object。

  • 转型

在这里插入图片描述

  • Nothing和Null

Nothing是所有类型的子类型,也称为底部类型。没有一个值是Nothing类型的。它的用途之一是给出非正常终止的信号,如抛出异常、程序退出或者一个无限循环(可以理解为它是一个不对值进行定义的表达式的类型,或者是一个不能正常返回的方法)。
Null是所有引用类型的子类型(即AnyRef的任意子类型)。它有一个单例值由关键字null所定义。Null主要是使得Scala满足

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值