zoukankan      html  css  js  c++  java
  • 2.scala控制结构、函数、异常处理

    2.scala控制结构、函数、异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本

    2.scala控制结构、函数、异常处理

    2.1条件表达式

    (1)if表达式有返回值,如val result = if(x>0) 0 else -1 ,则result值可能为0或-1
    (2)if表达式分支语句返回值的类型不一致时,则表达式返回值的类型是它们共同的父类型Any
    val result = if(x>0) 0 else "error"
    则result的类型为Any
    (3)若if表达式没有分支满足条件,则返回Unit

    2.2块表达式

    (1)块表达式的值是最后一个语句的返回值,一个块中有多个语句时用逗号隔开。如:
    val result = {val x=2;val y=3;pow(x,y)}

    2.3循环

    (1)while循环的实现方式和java中一样。
    (2)scala中的for循环写法如下:
    for(i <- 1 to 10){ println(i) }
    (3)for推导式。如果for循环的循环体以yield开始,则该循环会构造出一个集合,每次迭代生成集合中的一个值,如:
    for(i <- 1 to 10) yield i%3 //得到Vector(1,2,0,1,2,0,1,2,0,1)

    2.4函数

    一个函数包含了函数名称,参数和函数体等三个元素,如:
    def abs(x:Double) = if(x>=0) x else -x
    如果不是递归函数,不需要给定返回值类型

    2.5参数

    (1)默认参数。调用某些函数时可以不用给出参数,此时使用默认参数。如:
    def check(path:String,name:String="home")
    使用check("local")时传入的两个参数分别为local和默认的home
    (2)带名参数。在提供参数值的时候指定参数名,带名参数可以打乱参数列表的顺序,但是带名参数和不带名参数共同使用时,需要将不带名参数放在带名参数之前。
    (3)变长参数。参数列表可以为同类型的多个参数。如:
    def sum(num:Int*)={ val count = 0 for(i <-num){ count +=i } }
    函数得到的是一个序列,但是不代表可以传入一个序列。如sum(1 to 5)这种写法是错误的。

    2.6懒值

    当val被生命为lazy时,它的初始化会被推迟,直到其被第一次取值时。如:
    val a = 0 lazy val b = a*10

    2.7异常处理

    scala中异常处理与java类似。一般写法如下:
    try{ process }catch{ case e:Throwable => some process case _ => other process }finally{ }

  • 相关阅读:
    【leetcode】1020. Partition Array Into Three Parts With Equal Sum
    【leetcode】572. Subtree of Another Tree
    【leetcode】123. Best Time to Buy and Sell Stock III
    【leetcode】309. Best Time to Buy and Sell Stock with Cooldown
    【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee
    【leetcode】467. Unique Substrings in Wraparound String
    【leetcode】823. Binary Trees With Factors
    【leetcode】143. Reorder List
    【leetcode】1014. Capacity To Ship Packages Within D Days
    【leetcode】1013. Pairs of Songs With Total Durations Divisible by 60
  • 原文地址:https://www.cnblogs.com/bigdataer/p/6379734.html
Copyright © 2011-2022 走看看