Scala 基础语法

原创 2015年07月10日 10:00:38

Scala 基础语法

流程控制

scala if 语句判断

scala> if (x > 20) 1 else -1
res0: Int = -1

if 语句也可以直接放入一个变量返回值中

scala> val s = if (x > 0) 1 else -1
s: Int = 1

scala 存在一种混合类型表达式,比如

scala> if (x > 0) "positive" else -1
res1: Any = positive

这种表达式依赖于公用父类型 Any

如果不需要使用else的情况,可以直接省略

scala> if (x > 1) 3
res2: AnyVal = 3

scala 无switch语句, 但是我们会介绍一种更有效的模式匹配语法。

scala 语句并不需要 ; 结束. 长语句分行必须是符号结尾,。

在scala中,大括号可以包含整个语句的返回值,返回值是最后一个表达式的值。 如果是void类型, 那返回值就会是Unit,例如:

val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) }

scala中简化了输入输出的基本操作 (对比java), 终端的输入输出语句可以使用如下方法完成

println("test") //打印一行
print("1")//同行输出

val = name = readLine("Your Name: ") // 从终端读取一行

在print函数中, 你可以使用s前缀然后用 $ 符号来进行输出变量
另外, scala也支持一个c风格的printf函数

printf("Hello, %s! You are %d years old.\n", "Fred", 42)

循环语句

在scala中,循环语句语法于c 和java的基本一致。例如

 while (n > 0) {
    r = r * n
    n -= 1
}

while 语句是一致的,但是 for 语法就比较奇特

for (i <- 1 to n) 
    r = r * 1

操作数组时, 如果想在 n - 1 的下标停止, 可以使用 until 来实现

val s = "Hello"
var sum = 0
for (i <- 0 until s.length) // Last value for i is s.length - 1
  sum += s(i)

循环可以直接取字符串,例如

var sum = 0
for (ch <- "Hello") sum += ch

在scala中不存在 break continue 语句, 如果你需要的话, 可以使用Boolean 来控制流程, 或者使用嵌套函数还有 用一个break的方法, 你需要导入下面的这个包
import scala.util.control.Breaks._


函数

scala的函数标准定义如下

def fac(n: Int): Int = {
    if (n <= 0) 1 else n * fac(n - 1)
    }

如所示,函数定义是使用 def 关键字开始, 然后给出函数的参数类型以及名称, 括号外用冒号隔开, Int 是返回类型, scala的函数并不需要 return 关键字, 但是也是可以加上的,效果一样。 另外啰嗦一点,在非OOP语言中, function是被翻译叫做函数, 在java这样的OOP语言中,叫做函数或者method.

在变量或者常量的定义中, 也可以用此例中的形式制定变量类型,如:

 var i : Int = 10

在函数定义时, 你也可以加入默认的值

def fac(n: Int = 100): Int = {
    if (n <= 0) 1 else n * fac(n - 1)
    }

如果你想定义一个不知道有多少个字符串参数的函数, 以下例子可以完美的完成这份工作

scala> def connect(args:String*) = { var res = ""
     | for (arg <- args) res += arg
     | res
     | }
connect: (args: String*)String

scala> connect("c","b","c")
res0: String = cbc

在函数的默认情况下, 函数不需要返回 任何东西, 但是也有些人不喜欢这种设计,所以加上了如此方法:

def box(s : String): Unit = {
  ...
}

Lazy值

lazy val words = "abcd"

以上代码并不会直接被赋值, 而是在其他地方调用words的时候才会被初始化, lazy的设计是为了避免打开某些资源占用不放的情况。


异常

scala使用和java一样的捕获异常的方法。例如:

throw new IllegalArgumentException("x should not be negative")

如此, 我们也有对应的 try catch finally 方法去处理。 但是这种组合在scala中是很少见的,因为我们更多会用到模式匹配的方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

第三节:scala-基础语法

定义变量scala> var hellowvar="hellowvar" hellowvar: String = hellowvar//重新赋值 scala> helloString="second...

scala语法 基础3

/** * 高阶函数 */object Study7 extends App{//函数定义 def add(a:Int ,b:Int) = { a + b } // ...

三. Scala基础语法

Scala基础语法如果你是一名Java程序员,并了解Java语言的基础知识,这将有助于快速学会Scala基础语法。 Scala与Java的最大区别是Scala语句末尾的分号;是可选的。我们可以认为S...

Scala常用基础语法总结(一)

1、在spark 中如果没有为一个表达声明变量,默认为res。比如:scala> 1+1 res0: Int = 2在实际开发中你常会看到如下代码Try(............) match { ...

scala 常用基础语法总结(二):mkString 、ArrayBuffer、yield 的使用

1、Array 数组数组声明方式一: val a = new Array[Int](10) 注意: 数组初始化后,长度就固定下来了,而且元素全部根据其类型初始化数组声明方式二: val s=Arra...

Scala基础语法笔记

1.Scala的数据类型: Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int...

Scala 学习1-基础语法

包包定义 JAVA方式 package top.xfdtm class Clazz C#方式 package top.xfdtm{ class Clazz }引用默认情况下,Scala 总会引...
  • kolewei
  • kolewei
  • 2017年03月13日 23:46
  • 90

Scala 基础语法入门

Scala 基础语法入门: 适合java程序员快速入职主要看注释就够了,记住都是静态的。package com.dt.scala.helloimport java.io.File import sca...

Scala 基础语法代码

package org.exinglo.scala class LearnScala { } object Test{ val variable1 = "this is my first s...

Scala安装与语言基础语法笔记

工欲善其事必先利其器,先把环境配置一下吧。 下载 各种平台下scala: http://www.scala-lang.org/download/ 这里用windows平台下: windows:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Scala 基础语法
举报原因:
原因补充:

(最多只允许输入30个字)