美文网首页
第二讲 控制语句和函数

第二讲 控制语句和函数

作者: 农民工进城 | 来源:发表于2018-04-02 23:45 被阅读0次

本章主要内容

  • if表达式
  • 循环
  • void类型 Unit
  • 函数

2.1 if表达式

scala的 if表达式和 java差不多,如: if(a>b)a else b。
在scala中,每一个表达式,都是一个类型,例如:if(1>0) 1 else 0,是int类型。
但是有一个例外,如果只有if没有else,例如:if(1<0)1,永远不会满足条件,因此不会输出,但是在scala中每一个表达式都是一个类型,为了解决这个问题引入了Unit,用()来表示,所以上书表达式等同于if(1<0)1 else()

2.2 循环

scala有和java一样的while循环和do循环:

while循环格式如下:

     var n=3;
      while(n>0){
        print(n);
        n-=1;
      }

do循环格式如下:

     var n=3;
     do{
        print(n);
        n-=1;
      } while(n>0)

但是没有和java结构一样的for循环,但是有功能类似的for语句,格式如下:
语法结构是:

for(i <- 表达式){
//do something
}
  for(n <- 1 to 3){
          print(n)
   }

util关键字

  for(n <- 1 until 4){ //1-4 不包括4
          print(n)
   }

2.3 scala的break

break语法如下:

// import following package
import scala.util.control._

// create a Breaks object as follows
val loop = new Breaks;

// Keep the loop inside breakable as follows
loop.breakable {
   // Loop will go here
   for(...){
      ....

      // Break will go here
      loop.break;
   }
}

举个例子:

def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6,7,8,9,10);
      val loop = new Breaks;

      loop.breakable {
         for( a <- numList){
            print( a );
            if( a == 5 ){
              println();
               loop.break;
            }
         }
      }
      println( "*****end*****" );
   }

运行结果:


break.png

2.4 高级for循环和for推导式

可以用 变量<- 表达式 的形式,提供多个生成器;
例子:乘法口诀表:

    for (i <- 1 to 9; j <- 1 to 9) {
      if (i >= j) {
        print(j + "*" + i + "=" + (i * j) + "  ")
        if (i == j) {
          println();
        }
      }
    }

每个生成器都会有一个类似于过滤器的if语句;
例如:

 for (i <- 1 to 5; j <- 1 to 5 if i==j) {
        print(j + "*" + i + "=" + (i * j) + "  ")
    }

运行的结果是:


过滤.png

另外,scala的for循环中可以引入任意多的变量,比如
还可以这样

for (i <- 1 to 5; from=8-i;j <- from to 5 ) {
        println(j + "*" + i + "=" + (i * j) + "  ")
}

运行结果如下:


结果.png

for循环体的前面使用 yield 关键字:如果在for循环体前面加上yield关键字,则说明该for循环将输出1个集合,而每次循环的输出做为该集合中的一个元素。
例如:

var result=for (i <- 1 to 5) yield {
       if(i%2==0){
        i
      }else{
        0
      }
    }
    println(result)

运行的结果是:


结果.png

2.5 函数的定义

Scala函数声明具有以下形式 -

def functionName ([list of parameters]) : [return type]

如果不使用等号和方法体,则隐式声明抽象(abstract)方法。

函数定义

Scala函数定义具有以下形式 -
语法

def functionName ([list of parameters]) : [return type] = {
   function body
   return [expr]
}

这里,返回类型可以是任何有效的Scala数据类型,参数列表将是由逗号分隔的变量列表,参数列表和返回类型是可选的。与Java非常相似,返回语句可以与表达式一起使用,以防函数返回值。
例子1:求某个值的绝对值

 def abs(i:Int):Int={
     if(i>=0){
       i
     }else{
       -i
       }
   }

例子2:递归求阶乘

def digui(i:Int):Int={
     if(i<=0){
       1
     }else{
       i*digui(i-1)
       }
   }

例子3:无返回值的函数

 def dayin(str:String):Unit={
     print("******start*******")
     print(str)
     print("******end*******")
   }

相关文章

  • 第二讲 控制语句和函数

    本章主要内容 if表达式 循环 void类型 Unit 函数 2.1 if表达式 scala的 if表达式和 ja...

  • 2018-05-08 JavaScript基础回顾

    一、语句分类: 声明语句 赋值语句 控制语句 表达式语句 二、函数 三、默认函数 四、函数作用域和代码块作用域 不...

  • SQL存储过程和函数(2)

    存储过程和函数中可以使用流程控制来控制语句的执行。MySQL中可以使用IF语句、CASE语句、LOOP语句、LEA...

  • js运算符

    1、return语句:在js里面的return语句用来返回控制和函数结果。通常情况,return语句对于一个函数是...

  • 1 控制语句 和 函数

    控制语句语句描述了完成一项任务的算法操作规则。程序本身就是由这样的语句序列组成。各条语句之间以分号(;)分隔开。一...

  • 黑猴子的家:mysql 流程控制函数

    流程控制函数 1、if函数 2、case语句一 案例 3、case语句二 案例:查询部门和对应的级别

  • swift - 1

    swift大纲---一天学会swift 简单值:常量,变量 控制流:条件判断语句,循环语句 函数和闭包:函数特殊,...

  • Python官方教程阅读总结-流程控制

    常见的流程控制工具包括:条件控制语句, 循环控制语句,函数等,下面依次介绍 1. if 语句 用于条件判断,常见的...

  • Python浅薄的基础小结下

    控制流语句和函数function Python条件语句是通过一条或多条语句的执行结果(True或者False)来决...

  • Lua 快速笔记(二) syntax

    参考programing in lua 语法 函数 常用函数 语法 局部变量和代码块 控制语句 Lua 认为 fa...

网友评论

      本文标题:第二讲 控制语句和函数

      本文链接:https://www.haomeiwen.com/subject/aqefhftx.html