Scala学习,入门级。从官方文档开始。

先看目录:

在这里插入图片描述

重点研究这几个:
1.总览
2.REPL
3.变量类型
4.流程控制
5.类
6.方法
7.特质
8.集合类



1.Scala的概述。

进入本文的前提是SDK环境安装完成。
多方查看,不如从源头开始!!!
打开官方文挡地址:
Scala官方文档

在这里插入图片描述
查看一下,这个Scala的语言特征:(Overview)

		1.是一门高级语言
		2.静态类型
		3.语法简洁但还是可读——称其表达式
		4.支持面向对象(OOP)范式编程
		5.支持函数式(FP)编程
		6.推理系统复杂
		7.Scala编译后的.calss文件,运行在Java虚拟机上(JVM)
		8.Scala轻松使用Java的库

2.Hello, World!

遵循传统:
第一个程序,源码

object Hello extends App{
	print("Hello, World!")
}

运行:
scalac Hello.scala
得到如下图文件:

在这里插入图片描述
在这里插入图片描述
如果你用过Java,这个scalac 类似javac。
编译形成的两个文件。运行Hello.class

在这里插入图片描述
成功!!

3.REPL

Read-Evaluate-Print-Loop,这个功能,我们可以实现交互式编程。
可以像使用命令行一样来运行。
在这里插入图片描述
键入scala,就进入REPL模式。
在这里插入图片描述
举例:
在这里插入图片描述
(注:可以观察到scala的变量,不一定需要输入数据类型。)

4.两种变量类型

在这里插入图片描述
val:标记常量,值不可变。(value)
var:标记变量,值可变。(variety)

5.变量声明

在这里插入图片描述
Scala的变量声明放在变量名后面,且用冒号隔开。

注:Scala中没有没有像Java数据类型中的基本类型和包装类的差别。

6.流程控制

if/else

//Scala的if/else与其它语言类似:
if(test1){
	doA
}else if(test2){
	doB
}else {
	doD
}

值得注意的是:在Scala中,if/else语句,是可以有返回值的

val x = if (a < b) a else b

匹配表达式:

//这个类似Java中的swith/case,Scala中支持Int/bool/String

val result = i match {
	case 1 => "one"
	case 2 => "two"
	case _ => "not 1 or 2"//下划线表示除上述以外的所有值
}


val booleanAsString = bool match {
	case true => "true"
	case false => "false"
}

def getClassAsString(x :Any):String = x match {
	case s: String => s + "is a String"
	case i: Int => "Int"
	case f: Float => "Float"
	case l: List[_] => "List"
	case p: Person => "Person"
	case _: => "Unknown"
}

**try/catch异常捕获:**类似Java,但是其语法格式,可以有多个case

try {
    writeToFile(text)
} catch {
    case fnfe: FileNotFoundException => println(fnfe)
    case ioe: IOException => println(ioe)
}

for 循环
在Scala中去掉了"++/–"运算符,语言作者,认为这两个运算符容易造成混淆。

for (arg <- args) println(arg)

// "x to y" syntax
for (i <- 0 to 5) println(i)//步长为1

// "x to y by" syntax
for (i <- 0 to 10 by 2) println(i)//步长为2,可以实现自定义步长
//这也是一个简洁的表达。

也可以运用表达式计算

val x = for (i <- 1 to 5) yield i * 2

用for循环遍历 List

val fruits = List("apple", "banana", "lime", "orange")

val fruitLengths = for {
    f <- fruits
    if f.length > 4
} yield f.length

while循环
类似Java

// while loop
while(condition) {
    statement(a)
    statement(b)
}

// do-while
do {
   statement(a)
   statement(b)
} 
while(condition)

7.类

Scala的类关键字class,并且,class可以传参数。举例如下,其实有点像Java中的构造方法。

class Person(var firstName: String, var lastName: String) {
    def printFullName() = println(s"$firstName $lastName")
}

上面这个类的使用方法如下:

val p = new Person("Julia", "Kern")
println(p.firstName)
p.lastName = "Manes"
p.printFullName()

注意:在Scala中没有必要创建get来获取属性,或者set方法来设置属性。
举例:

class Pizza (
    var crustSize: CrustSize,
    var crustType: CrustType,
    val toppings: ArrayBuffer[Topping]
) {
    def addTopping(t: Topping): Unit = toppings += t
    def removeTopping(t: Topping): Unit = toppings -= t
    def removeAllToppings(): Unit = toppings.clear()
}

注:ArrayBuffer 类似Java的 ArrayList.

8.方法

class中,也有方法的定义。关键字def。

def sum(a: Int, b: Int): Int = a + b
def concatenate(s1: String, s2: String): String = s1 + s2

无返回值的方法

def sum(a: Int, b: Int) = a + b
def concatenate(s1: String, s2: String) = s1 + s2

使用如上方法

val x = sum(1, 2)
val y = concatenate("foo", "bar")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值