`

scala中的for表达式

 
阅读更多
通常,scala中for表达式有如下形式:
for ( seq ) yield expr

seq是一个生成器,变量定义,过虑器的序列,序列元素用分号分隔,下面是一个for表达式的例子:
for (p <- persons; n = p.name; if (n startsWith "To"))
  yield n

也可以使用大括号来代替圆括号,那么分号就变成了可选项:
for {
  p <- persons // a generator
  n = p.name // a definition
  if (n startsWith "To") // a filter
} yield n

生成器的结构如下:
pat <- expr

定义的结构如下:
pat = expr

过滤器的结构如下:
if expr

这里expr是一个布尔类型的表达式

另外,一个for表达式中可以有多个生成器,如下示例:
scala> for (x <- List(1, 2); y <- List("one", "two"))
yield (x, y)
res0: List[(Int, java.lang.String)] = List((1,one), (1,two), (2,one), (2,two))
分享到:
评论

相关推荐

    Scala中正则表达式以及与模式匹配结合(多种方式)

    说明:.r()方法简介:Scala中将字符串转换为正则表达式 /** You can follow a string with `.r`, turning it into a `Regex`. E.g. * * `"""A\w*""".r` is the regular expression for identifiers starting wi

    Scala程序设计(第2版)

    3.6 Scala中的for推导式 67 3.6.1 for循环 67 3.6.2 生成器表达式 67 3.6.3 保护式:筛选元素 67 3.6.4 Yielding 68 3.6.5 扩展作用域与值定义 69 3.7 其他循环结构 70 3.7.1 Scala的while...

    jscala:Scala宏,可从Scala代码生成JavaScript

    Scala if作为表达式(例如val a = if(true)1 else 2) Scala匹配作为JavaScript开关 基本的Scala类/特征定义到JavaScript对象定义的转换 全局JavaScript函数(parseInt等) 基本浏览器对象(窗口,历史记录,...

    快学 scala 中文版 带完整目录

    14.8 for表达式中的模式 229 14.9 样例类 229 14.10 copy方法和带名参数 230 14.11 case语句中的中置表示法 231 14.12 匹配嵌套结构 232 14.13 样例类是邪恶的吗 233 14.14 密封类 234 14.15 模拟枚举 235 ...

    spark从入门到实战

    7.IF语句及WHILE循环、循环表达式及FOR基本使用 8.FOR循环深入讲解及yield功能 9.SCALA中的Breaks使用 10.函数的定义(如何确定一个函数) 11.函数的定义(各种情况下函数定义与使用) 12.函数的作用域、默认参数...

    Scala快速从入门到神坑

    1. 在Windows操作系统中安装Scala 2. 在Linux操作系统中安装Scala 三、Scala 基础部分 3.1 声明值和变量 3.1.1 val变量 3.1.2 var 变量 3.2 级别数据类型和操作 3.2.1 级别数据类型 3.2.2 操作符 3.3 Range 3.4 打印...

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

    02.Scala中的常量 03.Scala中的变量 04.字符串的定义 05.惰性赋值 06.标识符 07.数据类型 08.类型转换 09.值类型和String类型之间的相互转换 10.键盘录入功能 11.案例_打招呼 第三章 运算符 001.导学 01.算术运算符 ...

    Scala的文件读写操作与正则表达式

    在本篇文章中你将会学习并了解常用的文件处理任务,例如读取文件的一行文本,本博客的要点包含: 1.Source.fromFile&#40;…&#41;.getLines.toArray 输出文件所有行 2.Source.fromFile&#40;…&#41;.mkString 以字符串...

    scala-fmi-2021

    使用Scala进行高级功能编程 讲课 [] Scala工具 scala , scalac ,REPL sbt,配置,编译,启动和测试 添加库 类型和文字 定义val , var , def , type ,函数。 类型推断 文件和包 值作为对象(带有方法) if...

    第4讲-Scala编程详解:条件控制与循环.rar

    1. if表达式 2.语句终结符、块表达式 3.输入和输出 4.循环 5.高级for循环

    scala-fmi-2019:索非亚大学教授的Scala函数式编程课程材料

    控制结构和块作为表达式List , String , Range基本操作[]的名义上反对结构性打字OOP示例班级对象和伴侣对象统一访问原则案例类特质关于OOP + FP的讨论[ ] 数学意义上的功能参考透明性(参考透明性) 替代模型用作...

    Kotlin 语言文档

    Kotlin 语言文档 pdf 目录 概述 4 使用 Kotlin 进行服务器端开发 4 使用 Kotlin 进行 Android 开发 5 Kotlin JavaScript 概述 6 Kotlin 1.1 的新特性 7 开始 15 ...与 Scala 比较【官方已删除】 187

    parser-combinators:AC# 解析器组合器库,模仿 Scala 的解析组合器

    这是一个好奇的项目,看看我是否可以在 C# 中实现一个半体面的 Parser Combinator 库,基于 Scala 附带的库(在scala.util.parsing.combinator 中)。 它非常不完整,错误报告很糟糕,也没有单元测试,但它确实为从...

    Scala—— 2. 流程控制

    1.表达式: A.条件表达式 val x = 3 val y = if(x &gt; 1) 1 else -1 B.混合类型表达式 支持返回多种类型(前提是在不确定类型的情况下,val y:String或val y:Int这样都不行)。 val y = if(x &gt; 1) 1 else hello val b...

    kotlin-for-datascience:kotlinx并发,序列化器,kvs(redis),多进程,详细设计模式

    Kotlin遵循Apache Spark中使用的Scala语法,从而可以进行复杂的数据操作。 Apache Spark有一个称为RDD的数据框,可以使用该数据框执行数据操作,但是可以以类似于对List的操作(如Kotlin和Ruby)的方式使用它。 ...

    像计算机科学家一样思考Python(第2版).pdf

    业余时,作为一个编程语言爱好者,对D、Kotlin、Lua、Clojure、Scala、Julia、Go等语言均有了解,但至今仍为Python独特的风格、简洁的设计而惊叹。 目录 · · · · · · 第1章 程序之道 1 1.1 什么是程序 1 ...

    zio-intellij:ZIO库生态系统的随附IntelliJ IDEA插件

    为IntelliJ IDEA中的ZIO库生态系统用户提供检查,重构和其他改进。 安装 该插件现已在。 支持的版本:IntelliJ IDEA 2019.3,2020.x(社区版或更高版本) 产品特点 该插件具有ZIO的多项强大功能: 测试跑步者支持 ...

Global site tag (gtag.js) - Google Analytics