Scala的控制结构和函数
控制结构和函数先看以下简单的一个条件表达式的demo object TestConditional { def main(args: Array[String]): Unit = { // scala的if判断表达式 var x = 1 if (x > 0) x = 10 else x = 20 println(x) } }
在java和C++中,每一个语句都以分号结束,而在Scala中和JavaScript类似--行尾的位置不需要分号,因为Scala编译器能够从上下文明确判断出是语句的终止,但是若要在单行中写下多个语句,需要用分号隔开,例如下面的表达式需要分号隔开 if (n > 0) {r = r * n; n-=1} 若是在写较长的语句,需要两行来写,需要告诉编译器不是语句结尾,例子如下: x = y + (v - m) * d + // +告诉编译器不是结尾 0.5 * (c - v) * t
在java中,块语句是一个包含与{}中的语句序列,在Scala中{}包含一系列表达式,在Scala中,赋值动作本身没有值,它们是Unit类型,相当于java中的void,而这个类型只有一个值,写做() {r = r * n; n-=1}
打印一个值可以使用print或者println函数, 例如: println("x="+"10"),另外还有一个带有C风格格式化的字符串printf函数例如: printf("hello,%S! welcome to Scala world.n","michael") 也可以使用readLine函数从控制台读取一行输入,读取数字,Boolean或者是字符,可以永readInt,readDouble,readByte,readShort,readLong,readFloat,readBoolean或者readChar。 // 使用readLine val name=readLine("your name:") print("your age") val age = readInt() printf("hello,%s! you have %d year work experience",name,age)
Scala中没有提供break或者continue语句退出循环,一般可以有以下三种方法跳出循环: 1. 使用Boolean型的控制变量 2. 使用嵌套函数---使用return 3. 使用breaks对象中的break方法 import scala.util.control.Breaks._ breakable { for(...) { // 退出循环 if(...) break; } }
// 多个生成器 for (i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + " ") println() // 守卫生成器,if前没有分号 for (i <- 1 to 3; j <- 1 to 3 if i != j) print((10 * i + j) + " ") // 可以定义变量,在循环中引入 println() for (i <- 1 to 3; from = 4 - i; j <- from to 3) print((10 * i + j) + " ") for循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala中for循环是有返回值的。如果被循环的是Map,返回的就是Map,被循环的是List,返回的就是List,以此类推。 scala> for (i <- 1 to 5) yield i res10: scala.collection.immutable.IndexedSeq[Int] = Vector(1,2,3,4,5)
def abs (x: Double) = if (x >= 0) x else -x 必须给出所有参数的类型,只要不是递归就不需指定返回类型。Scala会自动通过=符号右侧的表达式的类型推断出返回类型 // 递归函数,必须指定返回类型 def fac(n : Int) :Int = if (n<=0) 1 else n* fac(n -1) 以上代码都可以在github获取 https://github.com/codegeekgao/framework-skills/tree/master/scala-demo/src/main/scala/conditionalexpression 欢迎点缀加个star~~~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |