Scala 学习1-基础语法

包定义

  1. JAVA方式
package top.xfdtm
class Clazz
  1. C#方式
package top.xfdtm{
    class Clazz
}

引用

默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._

import java.awt.Color // 引入单成员
import java.awt._ // 引入包内所有成员
import java.awt.{Color, Font} // 引入几个成员
import java.util.{HashMap => JavaHashMap} // 引入成员重命名
import java.util.{HashMap => _, _} // 引入所有成员, HashMap隐藏

变量定义

// val 类似于java中的final, 定义val后无法在重新赋值

val msg = "Hello World!"
val msg1: String = "Hello World!"
var msg2 = "Hello World!"
val num1, num2 = 100
val {val1, val2} = Pair(40, "val")

数据类型

数据类型描述
Byte8位有符号补码整数。数值区间为 -128 到 127
Short16位有符号补码整数。数值区间为 -32768 到 32767
Int32位有符号补码整数。数值区间为 -2147483648 到 2147483647
Long64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807
Float32位IEEE754单精度浮点数
Double64位IEEE754单精度浮点数
Char16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
String字符序列
Booleantrue或false
Unit表示无值,和其他语言中void等同。Unit只有一个实例值,写成()
Nullnull或空引用
NothingNothing类型在Scala的类层级的最低端;它是任何其他类型的子类型
AnyAny是所有其他类的超类
AnyRefAnyRef类是Scala里所有引用类(reference class)的基类

常用字面量

  • 整形字面量
21 
0xFFFFFFFF 
0777L
  • 浮点型字面量
0.0 
1e30f 
1.0e100
.1
  • 符号字面量
    <标识符> 可以是任何字母或数字的标识(注意:不能以数字开头)
'<标识符>
scala.Symbol("<标识符>")
  • 字符串字面量
"Hello,\nWorld!"

 """Kole
 is
 me"""

函数定义

def max(x: Int, y: Int): Int = {
    if (x > y) x
    else y
}
var max = (x: Int, y: Int) => if (x > y) x else y

循环

while 循环

var i = 0
while (i < args.length) {
    println(args(i))
    i += 1;
}

do while 循环

var i = 10
do{
    println( i )
} while ( i > 0 )

for

// 指令式for的函数形式
// 此处msg是val类型,非var类型

for (msg <- args)
    println(msg)

to: [1-10]

// to实际上是Int中的一个方法 (1).to(10)
var i = 0
for ( i <- 1 to 10 )
    println(i)

until: [1-10)

var i = 0
for ( i <- 1 until 10 )
    println(i)

分号(;)设置区间

for( a <- 1 to 3; b <- 1 to 3){
    println( "Value of a: " + a );
    println( "Value of b: " + b );
}

循环过滤

// 只执行if返回truefor( a <- numList; if a != 3; if a < 8 ){
    println( "Value of a: " + a );
}

变量存储yield

// 返回值作为一个变量存储
var retVal = for (i <- list; if i != 4)yield i
// 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。

指令式循环

// scala允许使用指令式的编程风格
// 函数式语言的主要特征, 函数是头等结果

args.foreach(msg => println(msg))

// 指定类型的正规写法

args.foreach((msg: String) => println(msg))

// 更紧凑的写法

args.foreach(println)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值