最近在做一个spark项目,顺便分享一下我的Scala入门过程。这一系列文章假定读者有一定的java或者其他面向对象编程语言基础。本文主要简单介绍Scala的集合类型,包括Array,Tuple和Map。
照例先上一段代码
注:ITEYE不支持Scala语法高亮,所以为了看起来方便,我选择作为Java来展示。
object TestScala3 { def main(args: Array[String]): Unit = { val tuple = (1, "two", "three", true) println(tuple._1) println(tuple._2) val array = Array(1, "two", "three", true) for (i <- 0 until array.length) { println(array(i)) } for (item <- array) println(item) val map = Map(1 -> "one", "two" -> 2, true -> "true") for ((k, v) <- map) println("key = " + k + ", value = " + v) for ((_, v) <- map) println("value = " + v) println(map.get(1)) println(map.get(3)) } }
第一个例子,我们创建了一个4个元素的tuple,并打印出它的前两个元素。tuple是一个元组,它可以包含若干个不同类型的元素(在Scala2.8之后,Array和List也支持不同类型的元素)。在取用tuple中的元素时,使用下划线加index的语法,但注意,与其他集合不同,tuple的index是从1开始的,实际上当你尝试写tuple._0时,会有得到编译错误“value _0 is not a member of (Int, String, String, Boolean)”, 并没有0这个下标。另外我们也从编译错误信息中看到,Scala具备类型推导的能力,它能够知道元组中的每个元素的类型。
在Java的函数中,如果我们想返回多个值,只能新建一个POJO去接,或者把返回值写入参数传入的引用中,非常麻烦,但在Scala中我们使用tuple就非常方便。
第二个例子,我们生命了一个Array,遍历并打印出Array中的每个元素。这里我们用到0until N,在上篇中我们写过0 to N,他们的区别在于until是一个前闭后开的函数,并不包括N,而to包括。
第三个例子,map储存的是键值对,用->声明。遍历时,把map中的每个键值对赋值给一个两个元素的tuple,再将这个tuple的两个元素打印出来。如果我们只关心map中的key或者value,我们可以使用占位符(_)来替代不关心的元素。
相关推荐
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
共13页第15讲-Scala编程详解:面向对象编程之Trait 共14页第16讲-Scala编程详解:函数式编程 共14页第17讲-Scala编程详解:函数式编程之集合操作 共9页第18讲-Scala编程详解:模式匹配 共11页第19讲-Scala编程详解:...
Scala编程:面向对象编程之对象第14讲-Scala编程:面向对象编程之继承第15讲-Scala编程:面向对象编程之Trait第16讲-Scala编程:函数式编程第17讲-Scala编程:函数式编程之集合操作第18讲-Scala编程:模式匹配第19讲...
第二章开始带领读者逐步入门Scala,讲解如何在命令行上运行Scala,以及如何编写和执行基本的Scala程序。这部分内容涵盖了Scala的语法基础,如变量声明、表达式、控制结构等,这些都是理解Scala语言的关键。 书中...
本篇文章主要面向有一定Java开发经验的程序员,旨在帮助他们入门Scala。 ### 1. Scala简介 Scala是由Martin Odersky设计的一种静态类型的编程语言,它的名字来源于"Scalable Language"的缩写,表明它能够从小规模...
本项目“scala-builds”是针对 Scala 入门者的构建集合,特别针对NixOS环境设计,旨在为开发者提供一系列预配置好的项目模板,帮助他们快速上手 Scala 开发。 首先,我们要理解“构建”在软件开发中的含义。构建...
总之,"Scala入门精华讲义"是一份全面的学习资源,旨在引导初学者逐步掌握Scala的基础语法、面向对象编程特性以及在大数据处理中的应用。通过深入学习和实践,你将能够利用Scala的强大功能,开启大数据领域的探索之...
在本教程中,我们将深入探讨Scala的基础知识,帮助你快速入门。 "Scala编程中文版"这份教程可能涵盖了以下内容: 1. **基础语法**:包括变量声明、数据类型(如基本类型、引用类型、集合)、操作符和控制结构(如...
Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 函数注意事项和细节 过程 惰性函数和异常 面向对象编程初级...