Scala学习 -- 基础语法

一、变量

  1、三种变量修饰符

    val 定义 immutable variable(不修改 常量)

    var 定义 immutable variable(可修改 变量)

      lazy val (惰性赋值的常量):不直接算出结果,在系统第一次调用 lazy val 的时候计算结果

scala> val d = 12
d: Int = 12

scala> val e = 20
e: Int = 20

scala> lazy val f = d * e
f: Int = <lazy>

scala> f*12
res41: Int = 2880

scala> f
res42: Int = 240

    * 可以不显示指定变量的类型,因为Scala会自动进行类别指导    

scala> val y:Int = 20
y: Int = 20

scala> val x = "asd"
x: String = asd

  

  2、函数与代码块

    代码块(Block)

        代码块用于组织多个表达式,代码块自身也是个表达式,求得的值是最后一个表达式的值。

        代码块有两种写法:

          1、表达式都写在一行,表达式之间分号分割   

{exp1; exp2}

        2、表达式分行,表达式末尾不需要分毫

{
    exp1
    exp2
}

    函数 

def functionName(param: paramType):returnType = {
    // function body: expressions
}

     示例代码如下:

object Hello {
  def helloDemo(name: String) = {
    s"Hello,${ name }"
  }

  def add(x:Int, y:Int): Int = {
    x+y
  }

  def main(arg: Array[String]) = {
    println(helloDemo("Yu Hang"))
    println(s"X + Y Result is ${add(12,34)}")
  }
}

  3、if、for表达式

    在Scala里面,if和for并不是语句,而是一个表达式。 语句是可以单独执行的、能够产生实际效果的代码;而表达式则是包含在语句中,根据某种条件计算出一个值或得出某种结果,然后由语句去判断和处理的代码。

    (1)if表达式

        if(logical_exp) valA else valB

scala> if(true) 1 else 2
res44: Int = 1

scala> if(false) 3 else 4
res45: Int = 4

scala> val a = 1
a: Int = 1

scala> if(a == 1) a
res46: AnyVal = 1

scala> if(a!= 1) a
res47: AnyVal = ()

scala> if(a!=1) "not one" else a
res48: Any = 1

scala> if(a!=1) "not one"
res49: Any = ()

  if(a!=1) a 的时候返回值是(), 因为“a!=1”是false,且 if 表达式没有 else,所以返回值为 Scala里面空是 Unit,所以if表达式的返回值就是Unit的文字量,就是一个空括号

     (2)for comprehension

println("正常的for遍历:")
for( s <- l) {   // generator
  println(s)
}
println("\n带有 filter 的for遍历:")
for(
  s <- l          // generator
  if(s.length>4)  // filter
) {
  println(s)
}
println("\n带有 filter 的for遍历:")
val result_for = for{
  s <- l              // generator
  s1 = s.toUpperCase()  // variable binding
  if(s1 != "")
} yield (s1)          // generator new collection
for( item <- result_for ) println(item)

    for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala 中 for 循环是有返回值的。如果被循环的是 Map,返回的就是  Map,被循环的是 List,返回的就是 List,以此类推。

  4、try与match表达式

      (1)try表达式

try {}
catch {}
finally {}

      示例代码:

try {
  Integer.parseInt("dog")
} catch {
  case _ => 0
} finally {
  println("always be printed")
}

      case _ => 0, "_"是通配符,无论try中是什么异常都会被catch到,并返回0。finally 是try{} catch{}之后执行的,无论表达式是否异常,都会执行finally。

      (2)match与switch较为相似

exp match {
  case p1 => val1
  case p2 => val2
  ...
  case _ => valn
}

      其中的 "case _" 就相当于switch中的 default。

val code = 3
  val result_match = code match {
    case 1 => println("one")
    case 2 => println("two")
    case 3 => println("three")
    case _ => println("other")
}

  

原文地址:https://www.cnblogs.com/Lyh1997/p/11185229.html

时间: 2024-10-09 18:20:44

Scala学习 -- 基础语法的相关文章

VBA 开发学习--基础语法2

VBA中的运算符 算数运算符及其作用 + 求两个数的和 -  求两个数的差:求一个数的相反数 *  求两个数的积 /   求两个数的商(保留小数位   5/2=2.5) \   整除 (保留整数位  5\2=2) ^  指数运算(5^3=5*5*5=125) Mod  两数相除取余数  12 Mod 9=3 比较运算符 =   等于 <   小于 > 大于 <= 小于或等于 >= 大于或等于 <> 不等于 IS  比较两个对象的引用变量 Like   比较两个字符串是否

.bat学习-基础语法

一般来说,脚本或者语言都有相同地方 定义变量,输入,输出,判断条件等等.知道的相同之处,我们就可以借助强大的搜索引擎进行查找我们想要知道的东西. bat为批处理脚本BATCH.现在只知道是使用于windows操作系统用来执行操作的批处理脚本 基础之前setlocal和endlocal 在一个bat文件内定义变量之前,一定要文件头部调用一个命令 setlocal 设置临时改变系统变量,,这样我们定义或修改变量,只对本bat文件有效. 我们获取到的系统环境变量如PATH,或者JAVA_HOME只是系

Scala学习——基础篇

一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达式推断而来: 鼓励使用val: 注:声明变量时不做初始化会报错. 明确类型: scala的变量或函数的类型总是写在变量或函数的后面. 1 val a:Int = 1 2 val str:String = 2 2.常用类型 Scala支持7种数值类型和1种Boolean类型. Byte/Char/Short/Int/Long/Float/D

Scala学习 - 基础类型

Scala中的类型相对于Java来说,与.net的想法更为接近,所有的类型都是基于一个基础类型,包括值类型也是继承自该类型: Java中值类型是语言直接提供的,这点上有点不同: 类型关系图如下: 其中所有类型的基类与Any Any之后分为两个AnyVal与AnyRef 其中AnyVal是所有值类型的父类型 AnyRef是所有引用类型的父类型 与其他语言稍微有点不同的是,Scala还定义了底类型 其中Null类型是所有引用类型的底类型,及所有AnyRef的类型的空值都是Null 而Nothing是

Mysql学习基础语法

-- Mysql  数 据 库 语 法 创建数据库 create database 数据库名; 创建表 create table 表名(id int,name varchar(20)    ); 复制表和数据 create table 复制后新的表名 select * from 旧表名: 复制表的结构 create table 复制后新的表名 select * from where 1=0 : 创建索引 create index 索引名 on 表名(列名): 创建视图 create view 视

scala系列--基础语法

Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. 类名 - 对于所有的类名的第一个字母要大写. 方法名称 - 所有的方法名称的第一个字母用小写. 程序文件名 - 程序文件的名称应该与对象名称完全匹配. import语句可以出现在任何地方,而不是只能在文件顶部.import的效果从开始延伸到语句块的结束. 如果想要引入包中的几个成员,可以使用selec

Scala - 03 - 基础语法

1- 变量 变量 mutable variable 在程序运行过程中其值可能发生改变的量 关键词var定义变量,定义时直接进行求值 常量 immutable variable 在程序运行过程中其值不会发生变化的量 在声明时就必须被初始化,而且一旦初始化后就不能再赋值: 关键词val定义常量,定义时直接进行求值: 关键词lazy val --- 惰性求值的常量,只有当该变量第一次被使用时才会被求值 常量不能修改.如果程序尝试修改常量的值,将会在编译时报错 变量类型引用 可以不显示指定变量的类型,S

python学习-基础语法

1.常量/变量 常量:一旦赋值不可改变,不能重新赋值.python不存在常量. 字面常量:一个单独出现的量,未赋值给任何变量或常量. 变量:是一个名字,在赋值符号的左边.这个名字可以指代赋值符号右边的内容. i = 3 除行首的空格,其它地方空格无意义. 变量的基本类型 int:理论上无长度限制 float:可能会损失精读 bool:True/False None:None python是强类型语言:不同类型之间不能相互计算 python是动态类型语言:变量可以重新赋值为其它类型 2.运算符 算

python2学习------基础语法

1.变量类型 Numbers(数字):int,float,long String(字符串) List(列表) tuple(元组) dict(字典) bool(布尔):True,False # 删除变量  del 变量名; 2.常用函数 <1> 输出信息 print 输出信息; <2> 交互 raw_input('请输入内容'); <3> 类型转换 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x)