scala中有许多方式去循环集合for
loops, while
loops, 和集合中的方法诸如 foreach
, map
, flatMap,这节主要说明for的用法和for的翻译(translated)
1、for的用法
val a = Array("apple","banana", "orange") //for 循环 for(item <- a) println(item) for(item <- a){ val s = item.toUpperCase() println(s) } //带有返回值的for循环 for(item <- a) yield item.toUpperCase() foreach print //val new_a = for(item <- a) yield item.toUpperCase() println //使用数字循环数组 for(item <- 0 until a.length ) println(s"$item is ${a(item)}") //Scala集合还提供了一个zipWithIndex方法,您可以使用它们来创建一个循环计数器 for((e, count) <- a.zipWithIndex ) println(s"$count is $e") //使用if守卫来进行判断过滤 for((e, count) <- a.zipWithIndex if e.contains("e")) println(s"$count is $e") //Looping over a Map val map = Map("fname" -> "Robert", "lname" -> "Goren") for((key,value) <- map) println(s"$key=$value")
2、for的翻译(translated
)
/**
* How for loops are translated
* 使用scalac -Xprint:parse ForScala.scala 来进行编译
* 1、for循环遍历 被转换成foreach方法调用的集合
* source:
* for (i <- 1 to 10) println(i)
* compiler:
* 1.to(10).foreach(((i) => println(i)))
* 2、for循环中的if守护条件其实是使用了withFilter调用序列的集合
* source:
* for (i <- 1 to 10 if i < 5) println(i)
* compiler:
* 1.to(10).withFilter(((i) => i.$less(5))).foreach(((i) => println(i)))
* 3、for循环中的yield表达式被转换成map方法调用的集合
* source:
* for (i <- 1 to 10) yield i * 2
* compiler:
* 1.to(10).map(((i) => i.$times(2)))
* 4、for循环中既包含if守护又包含yield转换成 先withFilter调用序列的集合 在map方法调用的集合
*/
相关推荐
### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...
Scala学习笔记,大全笔记
在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
本书介绍Scala基本语法、构造。以及如何将您已经知道的复制java语法转换为Scala,了解Scala除了javabecome之外还提供了哪些功能编程概念和惯用技巧和建议,这些技巧和建议在将现有java项目转换为Scala时非常有用
Learn Scala is split into four parts: a tour of Scala, a comparison between Java and Scala, Scala-specific features and functional programming idioms, and finally a discussion about adopting Scala in...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
### Scala学习笔记关键知识点 #### 1. “均码”哲学与并发编程 - **“均码”哲学**: 指的是Scala设计时遵循的一种设计理念,即尽量保持语言的统一性和简洁性,使得不同的功能和特性能够以一种相似的方式进行处理。...
《在Scala中进行编程:全面的分步指南》(Programming in Scala: A comprehensive step-by-step guide)是一本关于Scala编程语言的权威教材。这本书的独特之处在于它的共同作者是Scala语言的设计师Martin Odersky,...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
Scala还提供了多种控制结构,如While循环表达式、Do循环表达式、For语句段、Return表达式、Throw表达式、Try表达式等。 模式匹配是Scala中的一个核心概念,它允许程序员按照模式来检查数据。模式匹配包括变量模式、...