zoukankan      html  css  js  c++  java
  • 控制结构(Scala)

    控制结构

    Scala的控制结构有:if、while、for、try、match和函数调用。

    if表达式

    if可以作为一个返回值,如下面的代码。同时用val,就像Java的final变量一样,一旦初始化就不会改变。

    val filename = 
        if (!args.isEmpty) args(0)
        else "default.txt"
    

    while循环

    Scala的While循环和其他语言没多大差别。有while循环和do-while循环。while循环返回的不是有意义的值,而是Unit。

    一个注意的点,是对var的赋值。

    var line = ""
    while ((line = readLine()) != "")
        println("read" + line)
    

    这段代码在编译时,用!=对类型为Unit的值和String作比较,将永远返回true。其中line = readLine()返回的值是Unit,即用于返回()。而不是“”的值。这样循环条件永远为真。

    for表达式

    for可以表达各式各样的迭代,可以遍历整数序列,也可以遍历不同种类的集合。

    val filesHere = (new java.io.File(".")).listFiles
    for (file <- filesHere)
        println(file)
    

    通过“file < - filesHere”这样的生成器,我们可以遍历其中的元素。其中file是val类型的。

    util和to的区别:

    // 1,2,3,4
    for (i <- 1 to 4)
    // 1,2,3
    for (i <- 1 util 4)
    

    可以给for表达式添加过滤器。在for语句后加一个if子句。可以添加很多个if,形成多个过滤器.

    for (
        file <- filesHere
        if file.isFile
        if file.getName.endWith(".scala")
    )
        println(file)
    

    嵌套迭代,就是多个< -子句。

    用try表达式实现异常处理

    需要创建一个异常对象然后用throw关键字将它抛出。

    throw new IllegalArgumentException
    
    捕获异常

    使用try-catch子句。如果抛出异常,会依次尝试每个catch子句。

    match表达式

    break是隐含的。

    firstArg  match {
    case ” salt ”= >  prin t ln("pepper ”)
    case ” chips"  =>  println("salsa ”)
    case  "eggs ”=>  println (” bacon ”)
    case  _  =>  println("huh ?”)
    

    没有break和continue

    Scala去掉了break和continue。使用Break类中的break方法。一旦遇到break会从外层的breakable代码块退出。

    breakable {
        while(true) {
            println()
            if () break
        }
    }
    
  • 相关阅读:
    自定义ViewGroup基础巩固2---onMeasure()学习及综合实现圆形菜单
    Django自定义模板函数
    django迁移:全局、局部
    setup.py
    企鹅去北极熊家里玩
    python插入记录后获取最后一条数据的id
    清除浮动和解决塌陷
    html知识代码
    django模型:为已存在的表建立模型
    django模型:字段和选项
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/13134565.html
Copyright © 2011-2022 走看看