`
tongqingqiu
  • 浏览: 24094 次
  • 性别: Icon_minigender_1
  • 来自: 亚特兰大
社区版块
存档分类
最新评论

Scala基础(4)- 控制结构

阅读更多

If 表达式有返回值

你可以这样赋值,

val s = if (x > 0) 1 else -1

这样就不必像下面这样,这里s就必须是一个变量了。

if (x > 0) s = 1 else s = -1

你甚至可以根据情况返回不同类型的值

if (x > 0) "OK" else -1

语句结束不用分号

除非多个语句在一行出现,比如

if (n > 0) { r = r * n; n -= 1 }

语句块赋值

之前已经提到了,可以使用大括号包含一个语句块,从而实现比较复杂的计算然后赋值。

val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) }

简单循环

简单while

def gcdLoop(x: Long, y: Long): Long = {
    var a = x
    var b = y
    while (a != 0) {
        val temp = a 
        a=b%a
        b = temp
   }
b 
}

简单for循环

for (i <- 1 to 4)
       println("Iteration "+ i)

高级的For循环

加入Filter

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

多个生成器

def grep(pattern: String) =
          for (
            file <- filesHere
            if file.getName.endsWith(".scala");
            line <- fileLines(file)
            if line.trim.matches(pattern)
          ) println(file +": "+ line.trim)

异常

Scala基本沿用Java的异常。但是没有checked exception,捕捉异常可以使用灵活的模式匹配

try {
    process(new URL("http://horstmann.com/fred-tiny.gif"))
} catch {
    case _: MalformedURLException => println("Bad URL: " + url) 
    case ex: IOException => ex.printStackTrace()
}

和其他Scala控制结构一样,try-catch-finally是有返回值的。下面的例子教你如何在异常发生时返回一个默认值。注意的时finally通常用来做资源回收,不要依赖finally返回值。

def urlFor(path: String) =
          try {
            new URL(path)
          } catch {
            case e: MalformedURLException =>
              new URL("http://www.scala-lang.org")
}
0
0
分享到:
评论

相关推荐

    Spark 编程基础(Scala 版)-机房上机实验指南

    Scala语言基础:由于Spark最初是使用Scala开发的,本书将详细介绍Scala的基础知识,包括语法、数据类型、控制结构、函数式编程等。 Spark与Scala的集成:展示如何在Scala环境下搭建Spark开发环境,包括安装、配置...

    大数据技术之Scala.pdf

    我的博客中第一章到第十八章的...4.控制结构和函数 5.数据结构 6.模式匹配 7.高阶函数 8.类 9.对象 10.包和引用 11.继承 12.特质 13.注解 14.类型参数 15.隐式转换 16.文件和正则表达式 17.高级类型 18.并发编程 Akka

    Scala编程_中文高清完整版附带案例源码

    第7章,“内建控制结构”,显示了如何使用Scala的内建控制结构,如,if,while,for,try和match。 第8章,“函数和闭包”,深度讨论了函数式语言的基础建设模块,函数。 ...... 第31章,“组合子解析”,显示了如何...

    scala中文版

    scala入门基础 13章Scala编程语言函数、类、对象、函数式对象、内建控制结构等

    《快学Scala》完整版书籍.rar

    scala基础语法,语法基础,控制结构和函数,scala数组相关操作,映射和元组,类,对象,继承,文件和正则表达式,特质,操作符,高阶函数,集合,样式匹配和样例类。

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

    目录如下 Scala简介&快速入门 基础语法 变量 数据类型 流程控制 ...Scala数据结构之集合 函数式编程高级 隐式转换和隐式值 偏函数 高阶函数 闭包closure 柯里化函数 控制抽象 递归高级 Akka 介绍

    Scala快速从入门到神坑

    四、控制结构 4.1 if条件表达式 4.2 while循环 4.3 for循环 4.3.1 实例 4.3.2 for推导式 五、 数据结构 5.1 数组 5.2 列表(List) 5.3 元组(Tuple) 5.4 集(Set) 5.5 映射(Map) 5.6 迭代器(Iterator) 六、类(Class) ...

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

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

    快学 scala 中文版 带完整目录

    第2章 控制结构和函数 A1 19 2.1 条件表达式 20 2.2 语句终止 22 2.3 块表达式和赋值 22 2.4 输入和输出 23 2.5 循环 25 2.6 高级for循环 27 2.7 函数 28 2.8 默认参数和带名参数 L1 29 2.9 变长参数 L1 29...

    Scala编程实战.rar

    scala基础语法,字符串,数值,控制结构,类和属性,方法,对象,包和导入,特质,函数式编程,集合。列表,数组,映射,文件和进程,Actors和并发,命令行执行,

    简单举例说明C++中break和continue语句的用法

    主要介绍了简单举例说明C++中break和continue语句的用法,是C++入门学习中的基础只是,需要的朋友可以参考下

    scalabootcamphomework

    Scala训练营作业已完成的任务: 1.基础知识 2.类和特质 3,控制结构 4,数据结构/集合 5日 6,SBT 7,隐含 8.香港电话 9,错误处理

    Java及大数据学习路线.pdf

    全⽂检索+⽇志搜集+数据可视化ELK 多范式编程语⾔Scala SparkCore/Spark SQL/Spark Streaming/Spark mlib Spark内核和优化 JVM/JUC python 数据结构 ⼤数据框架Flink 3 Java基础图谱 4 软件开发介绍 软件开发 软件,...

    深入JVM内核 - 原理、诊断与优化

    除了Java,如JRuby、Scala、Clojure等语言也运行在JVM平台。熟悉和掌握JVM平台有着重要的实用价值和意义。 在本课程中个,将详细介绍JVM的基本原理、组成以及工作方式,并配合实际案例,介绍相关的调优技巧。 课程...

    gatling:将现代负载测试作为代码

    因为您的工具使用阻塞式IO和每用户一个线程的体系结构而不得不托管一个注入服务器场,您是否受够了? 加特林适合您! 基础技术 Gatling在Scala中开发,并基于: 用于非阻塞HTTP的 虚拟用户编排的 ... 有什么问题...

    大数据开源框架集锦.pdf

    Ambari Hadoop平台的管理软件,具备Hadoop组件的安装、管理、运维 3 ⽂件系统 HDFS 分布式⽂件系统 4 资源调度 YARN hadoop的资源管理和作业调度系统 5 协调框架 Zookeeper 分布式协调服务,解决分布式数据⼀致性⽅...

    BOULDER-Intent-NBI:基于意图的NBI开发

    开放式网络基金会(BOULDER) Open Intent NBI是一个北向项目,提供了可编写脚本的运行时,该运行时映射到Intent结构,该结构允许用户跨不同的基础控制器创建可移植的应用程序。 (正在开展的工作)-对于概念证明...

    Vinyldns:用于简化DNS操作并实现安全可靠的DNS自助服务的DNS治理

    它旨在与您现有的DNS基础结构集成,并提供可扩展性以适合您的安装。 VinylDNS通过以下方式帮助保护DNS管理: AWS Sig4对所有消息进行签名,以确保发送的消息在传输过程中没有被更改限制DNS更新以对DNS系统的并发...

Global site tag (gtag.js) - Google Analytics