一、Scala安装和配置

1.1安装

  • Scala需要Java运行时库,安装Scala需要首先安装jdk。
  • 然后在Scala官网下载 程序安装包
  • 根据不同的操作系统选择不同的安装包,下载完成后,将安装包解压到安装目录。将scala安装目录下的bin目录加入到PATH环境变量

完成以上流程后,在命令行输入:scala,进入如下界面: 直接输入scala

1.2Scala编写代码工具:IntelliJ IDEA:

下载Scala SDK

在项目中src中直接新建scala class,或者新建scala目录,并将该目录设置为source folders

新建scala class如下:

编辑代码:

object hello {
def main(args:Array[String]): Unit ={
print("hello")
}
}

右键运行,结果如图:

1.3在控制台运行Scala程序

  • 在控制台上直接运行scala类

  • 在Inetllj IDEA打包scala,在控制台运行

二、Scala入门

2.1scala解释器

开始学习Scala最简单的方式是使用Scala解释器,它是编写Scala表达式和程序的交互式的shell(称为“scala”),

只要在解释器里输入表达式,它就能计算并打印结果值。

  • 在命令提示符里输入scala(不限大小写)可以进入解释器
  • 在解释器中输入表达式,如1+1,回车后,出现输出信息依次为:自动产生的或许用户定义的名称,冒号及表达式的类型,等号,表达式经计算的结果值。

  • 想要在解释器中跨行输入语句的话,只需要一行行的输入,如果没有结束解释器则会在下一行回应一个“|”
  • 发现错误,解释器依旧等待输入,可以按两个回车键取消掉

  • 退出解释器:q或者:quit

2.2变量定义

  • Scala声明变量有两种方式,一个用val,一个用var。
  • val / var 变量名 : 变量类型 = 变量值。
  • val定义的值是不可变的,它不是一个常量,是不可变量,或称之为只读变量。 val类似于Java中的final

val示例:

var示例:

2.3函数定义

函数式语言的主要特征之一是函数是头等结构,下面有Scala函数的基本结构和Scala函数字面量的语法

  • 在如上图的函数所示,函数的定义以def开始,然后是函数名,上图的函数名是max,跟着是括号里面带着冒号分隔的参数列表。函数中的每个参数都必须带有前缀冒号的类型标注,因为编译器无法推断函数的参数类型。scala函数的基本结构演示如下图:

注意:在max参数列表的括号后你会看到另一个Int,既是函数返回值类型,在Scala中。同样概念被称作结果类型。

在Java中的void,在Scala写作Unit。

  • Scala函数字面量的语法如下图:

Scala实践1的更多相关文章

  1. Scala实践14

    1.Scala的future 创建future import scala.concurrent._ import ExecutionContext.Implicits.global object Fu ...

  2. Scala实践13

    1.隐式参数 方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果该参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,则自动传递. S ...

  3. Scala实践12

    1.内部类和抽象类型成员作为对象成员 内部类 在Scala中,可以让类将其他类作为成员.这些内部类是封闭类的成员.在Scala中,这样的内部类绑定到外部对象.假设希望编译器在编译时阻止我们混合哪些节点 ...

  4. Scala实践11

    1.1泛型类 泛型类是将类型作为参数的类.它们对集合类特别有用. 定义泛类型:泛型类将类型作为方括号内的参数[].一种惯例是使用字母A作为类型参数标识符,但是可以使用任何参数名称. class Sta ...

  5. Scala实践10

    1.模式匹配 模式匹配是一种根据模式检查值的机制.它是switch(Java中语句)的更强大版本,它同样可以用来代替一系列if / else语句. 句法 匹配表达式具有值,match关键字和至少一个c ...

  6. Scala实践9

    1.特征 Traits用于在类之间共享接口和字段.它们类似于Java 8的接口.类和对象可以扩展特征,但是特征不能被实例化,因此没有参数. 定义一个特征 最小特征只是关键字trait和标识符: tra ...

  7. Scala实践6

    1  if表达式 Scala中if...else..表达式是有返回值的,如果if和else返回值类型不一样,则返回Any类型. scala> val a3=10 a3: Int = 10 sca ...

  8. Scala实践8

    1.1继承类 使用extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. class Person { var name = "zhangsan" ...

  9. Scala实践7

    一.类 1.1简单类和无参方法 类的定义通过class关键字实现 scala> class Dog { | private var leg = 4 | def shout(content: St ...

  10. Scala实践5

    一.Scala的层级 1.1类层级 Scala中,Any是所其他类的超类,在底端定义了一些有趣的类NULL和Nothing,是所有其他类的子类. 根类Any有两个子类:AnyVal和AnyRef.其中 ...

随机推荐

  1. [转]C# 语言历史版本特性(C# 1.0到C# 8.0汇总)

    历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持.微软将C#提交给标准组织ECMA,C# 5.0目前是ECM ...

  2. 微信小程序wx.request 请求方法

    data: 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String .转换规则如下: 对于 GET 方法的数据,会将数据转换成 quer ...

  3. [转]Win10下安装Linux子系统

    工作以来一直DotNet系偏C/S, 接触Web开发的时间也不长, 现在主要偏向Web全栈方向, 一直对Linux系统心生向往, 夜深了娃睡了, 打开老旧的笔记本来折腾一下. 准备工作 控制面板 &g ...

  4. H3C 其他OSPF显示命令

  5. element ui 批量删除

    <el-table :data="tableData" stripe border style="width: 100%" @selection-chan ...

  6. ajaxSetup()方法

    使用ajaxSetup()方法设置全局Ajax默认选项 使用ajaxSetup()方法可以设置Ajax请求的一些全局性选项值,设置完成后,后面的Ajax请求将不需要再添加这些选项值,它的调用格式为: ...

  7. LuoguP5464 缩小社交圈

    LuoguP5464 缩小社交圈 背景:洛谷七月月赛T4 题目大意给定\(n\)个点,每个点的权值对应着一个区间\([l_i,r_i]\),两个点\(i,j\)有边当且仅当他们权值的并集不为空集,问有 ...

  8. Java逻辑思维训练题

    两柱香问题题目:有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切. 答案:将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半 ...

  9. <数论相关>欧几里得与拓展欧几里得证明及应用

    欧几里得算法 欧几里得算法的复杂度为O(log(n)),是一个非常高效的求最大公约数算法. 在这里不证明欧几里得算法的复杂度,有兴趣的可以访问以下链接:http://blog.sina.com.cn/ ...

  10. Date日期时间相关

    最近在封装一个关于时间函数的功能时,竟发现这些最基本的函数都有些生疏,于是进来来总结复习下,巩固自己记忆的同时,希望能帮助到需要的人 首先了解下日期对象相关的方法 var date = new Dat ...