Scala中break语句breakable

1. 前言

Scala 语言中默认是没有 break 语句,但是你在 Scala 2.8 版本后可以使用另外一种方式来实现 break 语句。当在循环中使用 break 语句,在执行到该语句时,就会中断循环并执行循环体之后的代码块。

2. 语法

Scala 中 break 的语法有点不大一样,格式如下:

// 导入以下包
import scala.util.control._

// 创建 Breaks 对象
val loop = new Breaks;

// 在 breakable 中循环
loop.breakable{
    // 循环
    for(...){
       ....
       // 循环中断
       loop.break;
   }
}

流程图
在这里插入图片描述

3. 实例

import scala.util.control._

object Test {
   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){
            println( "Value of a: " + a );
            if( a == 4 ){
               loop.break;
            }
         }
      }
      println( "After the loop" );
   }
}

执行以上代码输出结果为:

$ scalac Test.scala
$ scala Test
Value of a: 1
Value of a: 2
Value of a: 3
Value of a: 4
After the loop

4. 中断嵌套循环

以下实例演示了如何中断嵌套循环:

import scala.util.control._

object Test {
   def main(args: Array[String]) {
      var a = 0;
      var b = 0;
      val numList1 = List(1,2,3,4,5);
      val numList2 = List(11,12,13);

      val outer = new Breaks;
      val inner = new Breaks;

      outer.breakable {
         for( a <- numList1){
            println( "Value of a: " + a );
            inner.breakable {
               for( b <- numList2){
                  println( "Value of b: " + b );
                  if( b == 12 ){
                     inner.break;
                  }
               }
            } // 内嵌循环中断
         }
      } // 外部循环中断
   }
}

执行以上代码输出结果为:

$ scalac Test.scala
$ scala Test
Value of a: 1
Value of b: 11
Value of b: 12
Value of a: 2
Value of b: 11
Value of b: 12
Value of a: 3
Value of b: 11
Value of b: 12
Value of a: 4
Value of b: 11
Value of b: 12
Value of a: 5
Value of b: 11
Value of b: 12

转自:http://www.runoob.com/scala/scala-break-statement.html
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala,可以通过使用Scala语言内置的JDBC或使用Scala提供的第三方库(如Slick)来执行SQL查询。以下是使用JDBC的示例代码: ```scala import java.sql.{Connection, DriverManager, ResultSet} val url = "jdbc:mysql://localhost:3306/mydatabase" val driver = "com.mysql.jdbc.Driver" val username = "myuser" val password = "mypassword" // register driver Class.forName(driver) // create connection val connection: Connection = DriverManager.getConnection(url, username, password) // create statement val statement = connection.createStatement() // execute query val query = "SELECT * FROM mytable" val resultSet: ResultSet = statement.executeQuery(query) // iterate through result set while (resultSet.next()) { val id = resultSet.getInt("id") val name = resultSet.getString("name") val age = resultSet.getInt("age") println(s"$id\t$name\t$age") } // close connection resultSet.close() statement.close() connection.close() ``` 在上面的示例,我们使用JDBC驱动程序连接到MySQL数据库,并使用`Statement`对象执行查询。结果存储在`ResultSet`对象,我们可以使用`next()`方法迭代结果集并获取每一行的值。 如果你使用的是Slick库,则可以使用其提供的DSL语言来执行SQL查询。以下是使用Slick的示例代码: ```scala import slick.jdbc.MySQLProfile.api._ val url = "jdbc:mysql://localhost:3306/mydatabase" val driver = "com.mysql.jdbc.Driver" val username = "myuser" val password = "mypassword" // create database connection val db = Database.forURL(url, username, password, driver) // define table schema case class MyTable(id: Int, name: String, age: Int) class MyTableTable(tag: Tag) extends Table[MyTable](tag, "mytable") { def id = column[Int]("id", O.PrimaryKey) def name = column[String]("name") def age = column[Int]("age") def * = (id, name, age) <> (MyTable.tupled, MyTable.unapply) } val myTableQuery = TableQuery[MyTableTable] // execute query val query = myTableQuery.result val result = db.run(query) // iterate through result set result.map { rows => rows.foreach { row => println(s"${row.id}\t${row.name}\t${row.age}") } } // close connection db.close() ``` 在上面的示例,我们首先定义了表结构,并使用Slick的DSL语言定义了查询。然后,我们使用`db.run()`方法执行查询,并使用`map()`方法迭代结果集。由于Slick使用异步API,所以我们需要在最后关闭数据库连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值