`
kane_xie
  • 浏览: 144897 次
社区版块
存档分类
最新评论

Scala入门(二):流程控制

阅读更多
 
最近在做一个spark项目,顺便分享一下我的Scala入门过程。这一系列文章假定读者有一定的java或者其他面向对象编程语言基础。本文主要介绍Scala的流程控制和异常处理。

 

先上一段代码

注:ITEYE不支持Scala语法高亮,所以为了看起来方便,我选择作为Java来展示,但这是Scala代码,这点不用怀疑。。

 

object TestScala2 {
  def main(args: Array[String]): Unit = {
    //test 'for'
    for (i <- 1 to 10) println(i)
    //test 'dowhile'
    var line = ""
    do {
      line = StdIn.readLine()
      println(line)
    } while (line != "")
    //test 'if else'
    val a = (Math.random() * 10).toInt;
    val result = if (a % 2 == 0) "even:" + a else "odd:" + a
    println(result)
    //test 'try catch finally'
    try {
      //....
      throw new Exception("--exception message--")
    } catch {
      case e: Exception => println("the exception is " + e.getMessage)
    } finally {
      println("finally")
    }
  }
}

 

我们先看第一行for循环的代码,它是做一个从1到10的循环,将遍历的每一个结果赋值给i,再将i打印出来。“<-”是赋值符号,在Scala中非常常见。“1 to 10”表示1到10的循环,也可以写成“1.to(10)”,由于在Scala中一切皆对象,1是一个int类型的对象,它有to这个方法,并且接收另一个int对象作为参数。

 

在第二个例子中,将键盘的输入赋值给line并打印,如果line为空则跳出,否则继续循环接收输入。StdIn.readLine()表示接收键盘输入,StdIn这个类通过“import scala.io.StdIn”引入。while循环和dowhile循环类似。

 

第三个例子,判断一个随机数是奇数还是偶数,通过if else语句块实现,语法和Java类似,但有一点,Scala可以直接接收if else语句块的返回值。另外Math是java.lang这个包里的函数,Scala由于运行在jvm上,因此它可以直接调用Java。

 

最后一个例子是异常的处理。这里插一句,try catch finally语句块从语法上来说可以作为流程控制的手段,但从语义上来说,建议仅作为异常处理来使用,而不要用来控制流程的跳转,当然这是题外话了。我们看到在catch中,使用case来匹配捕获的异常,可以写若干个case,只要有一个能匹配上,即终止,不像Java中只要没有break就会继续匹配。

 

2
1
分享到:
评论
1 楼 comsci 2015-08-28  



     欢迎进入中国工作流/BPM市场..............

相关推荐

    SCALA从入门到精通个人笔记含代码

    流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 函数注意事项和细节 过程 惰性函数和异常 面向对象编程初级 类和对象 包 包对象 面向对象编程中级 ...

    rock-the-jvm-scala-beginners:Udemy Rock JVM的Scala入门课程

    还会涉及变量、常量的声明,以及流程控制语句如条件语句和循环。 3. **函数与类**:介绍Scala中的函数概念,包括高阶函数和匿名函数,以及类和对象的创建。学习者将学习到如何使用Scala的特质(trait)实现多重继承...

    scala从入门到精通技术教学视频

    01.流程控制结构之顺序结构 02.选择结构之单分支结构 03.选择结构之双分支结构 04.选择结构之多分支结构 05.选择结构之注意事项 06.选择结构之嵌套分支 07.扩展_块表达式 08.for循环之简单循环 09.for循环之循环嵌套...

    写给Python程序员的Scala入门教程1

    【标题】:“写给Python程序员的Scala入门教程1” 【描述】:本教程旨在帮助熟悉Python的程序员逐步学习Scala语言,特别关注如何利用已有的Python背景来理解和掌握Scala的特性和用法。教程将探讨Scala在大数据处理...

    Scala初学者入门课程笔记

    Scala 的流程控制语句包括 if 语句、for 语句、while 循环和中断循环等。 * if 语句:Scala 的 if 语句与 Java 相似,但有返回值,返回值为执行的 if 语句的最后一行代码的值。 * for 语句:Scala 的 for 语句可以...

    scala-basics:面向只懂动态语言的Scala学习者的资源

    1. **基本语法**:包括变量声明、数据类型(如Int、Double、String和Boolean)、运算符、流程控制(if/else、for循环、while循环)以及函数定义。 2. **模式匹配**:Scala中的模式匹配是其一大特色,它允许你以简洁...

    programming in Scala_ch

    - **循环和条件语句**: 使用`while`循环和`if`条件语句处理流程控制。 - **枚举**: 使用`foreach`和`for`循环遍历集合。 #### 高级特性 - **类型参数化**: 使用泛型来创建通用的数据结构和算法。 - **列表(List)**:...

    大数据开发入门指南:从概念到实践讲解.zip

    大数据开发入门指南旨在帮助初学者理解并掌握大数据技术的基础知识,从理论概念到实际操作,全方位解析大数据领域的关键要素。本指南将分为以下几个主要部分进行深入探讨: 一、大数据概念理解 大数据,顾名思义,...

    Programming in Scala

    2. **First Steps in Scala(Scala入门)**: - 安装配置Scala环境。 - Scala的基本语法,包括变量声明、基本数据类型等。 - 简单的程序示例,如打印“Hello, World!”。 3. **Next Steps in Scala(Scala进阶)...

    尚硅谷_韩顺平_Scala语言核心编程.pdf

    综上所述,尚硅谷提供的Scala语言核心编程课程内容涵盖了Scala语言的基础知识、环境搭建、基本语法、数据类型、运算符使用、程序流程控制和注释等核心概念,是学习Scala语言的宝贵资料。通过韩顺平老师的讲解,相信...

    spark从入门到实战

    ### Spark从入门到实战——SCALA编程篇 #### 一、大数据分析框架概要与Spark课程学习计划 在大数据时代,高效处理海量数据成为企业和组织的核心需求之一。Spark作为当前最受欢迎的大数据分析框架之一,以其高性能...

    Akka Scala文档

    #### 二、基础知识 ##### 2.1 术语与概念 - **Actor**:独立单元,负责接收和处理消息。 - **ActorSystem**:包含多个 Actor 的容器。 - **Message**:Actor 之间通信的基本单位。 - **Supervisor Strategy**:用于...

    Scala简单说明

    - **控制抽象**:通过函数来控制程序流程的方式。 - **模式匹配**:提供了一种更强大的分支结构,可以匹配多种模式。 - **样例类**:Scala提供的一种特殊类,用于模式匹配。 - **封闭类**:Scala中的封闭类是指所有...

    python-scala-lua等多种语言的学习的好书

    它的教程目录通常涵盖环境安装配置、工作流程、基本语法、基本示例、内置变量、运算符、正则表达式、数组、控制流、循环、内置函数、用户自定义函数、输出重定向、格式化打印等。 最后是C语言,作为当今广泛使用的...

    sbt-Starter:简单的 sbt 入门项目,第一个 Java 或 Scala 示例

    “sbt-Starter”是一个针对新手的项目,旨在帮助用户入门`sbt`(Scala Build Tool)。这个项目特别强调了它为Java和Scala开发者提供了第一个实践项目,帮助他们熟悉这两种语言在sbt环境下的应用。 **描述解析:** ...

    akka学习入门实践

    ### Akka 学习入门实践知识点详解 #### 一、Akka 概述 - **定义**:Akka 是一个用于构建高度并发、分布式、容错性应用的工具包,适用于 Java 和 Scala 开发者。它基于 Actor 模型,支持响应式编程范式。 - **目标**...

    大数据MapReduce Ubuntu Linux上的Hadoop Scala by Maven intellj Idea

    7. **IntelliJ IDEA**:是JetBrains公司开发的一款流行的Java集成开发环境,支持多种编程语言,包括Scala,提供了丰富的功能,如代码自动完成、调试、版本控制集成等,便于开发人员高效工作。 8. **wordcountSample...

    网络爬虫入门程序示例

    在这个名为“网络爬虫入门程序示例”的压缩包文件中,我们可以预期包含了一个或多个用于教学目的的简单爬虫程序。"pachong-work"很可能是一个文件夹,里面包含了源代码、数据文件或者相关的文档,帮助学习者理解网络...

    Android 开发从入门到精通

    通过本文,读者将学会如何使用Android的传感器接口监测环境变化,从音频录制到婴儿监视器的构建,甚至是声音控制的门锁系统,Android的硬件功能与软件开发紧密结合,创造了无限的可能性。 #### 结语 从入门到精通...

    Android开发从入门到精通

    ### Android开发从入门到精通 #### 一、Android概述与发展历程 **Android**是一种基于Linux V2.6内核的综合操作环境,最初由Andy Rubin创立,并于2005年被Google收购。该系统的设计初衷是针对移动电话领域,包括...

Global site tag (gtag.js) - Google Analytics