Spark是由Scala编写的。Spark作为一款十分易用高效的大数据框架使用越来越广泛,Scala也随之有更多的人去学习。

语言相通,相信有python、java基础的程序员学习Scala并没有太大的难度。但是Scala程序中奇奇怪怪的操作符却让人十分挠头。

Scala的教程大多都是从变量定义、函数、类等入门,我们直接从Scala符号入门,直接从代码中体会Scala的特性。

1. 怪符<-

经常在for循环中的使用,被称生成器(generator)。

在执行过程中,集合filesHere中(Array[File])的元素将依次赋给file,file类型为File,打印时调用其toString方法将文件名称打印出来。

val filesHere = (new java.io.File(".")).listFiles
//直接遍历数组元素
for (file <- filesHere)
| println(file) //间接遍历数组
for (i <- 0 to filesHere.length - 1)
println(filesHere(i))

还可以配合 untilif等加入一些限制条件。

for(i <- res39) println("Iteration"+i)

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

// 这样写看着奇怪,是同楼上一样的
for(i <- 1 .to(5)) println("Iteration"+i) //如果不需要5出现,则用until
scala> for(i <- 1 until 5) println("Iteration"+i) //加入if条件
for (file <- filesHere if file.getName.endsWith(".scala"))
println(file)

2. 怪符->

这个符号用于Map(映射)。Map是一种可迭代的键值对(key/value)结构。默认情况下 Scala 使用不可变 Map。 如果要使用可变集合,需要显式的引入 import scala.collection.mutable.Map 类

// 空哈希表,键为字符串,值为整型
var A:Map[Char,Int] = Map() // 需要添加 key/value对,可以使用 + 号
A += ('I' -> 1)
A += ('J' -> 5)
A += ('K' -> 10)
A += ('L' -> 100) // Map 键值对演示
val B = Map("red" -> "#FF0000", "azure" -> "#F0FFFF") //使用 ++ 运算符或 Map.++() 方法来连接两个 Map,Map 合并时会移除重复的 key
// ++ 作为运算符
var ab = A ++ B
// ++ 作为方法
ab = A.++(B)

3. 怪符=>

类似于转化符号,=> 指明这个函数把左边的东西(任何整数x)转变成右边的东西(x + 1)。所以,这是一个把任何整数x映射为x + 1的函数。有点像匿名函数,匿名函数由参数列表,箭头连接符=>和函数体组成。

// 定义匿名函数
val cube = (x: Int) => x * x *x

(x: Int)是匿名函数的参数,x * x *x 是函数体,箭头连接符=> 连接参数列表和函数体。

Scala中的=>符号也可以看做是创建函数实例的语法糖。例如:A => TA,B => T表示一个函数的输入参数类型是“A”,“A,B”,返回值类型是T。

val f: Int => String = myInt => "The value of myInt is: " + myInt.toString()
println(f(3))

上面例子定义函数f:输入参数是整数类型,返回值是字符串。

另外,() => T表示函数输入参数为空,而A => Unit则表示函数没有返回值。

4. 怪符_

这个和python一样了,是一个程序员懒得命名的变量。有时候也当通配符用的。

Scala的符号入门的更多相关文章

  1. scala程序开发入门

    scala程序开发入门,快速步入scala的门槛: 1.Scala的特性: A.纯粹面向对象(没有基本类型,只有对象类型).Scala的安装与JDK相同,只需要解压之后配置环境变量即可:B.Scala ...

  2. 使用scala开发spark入门总结

    使用scala开发spark入门总结 一.spark简单介绍 关于spark的介绍网上有很多,可以自行百度和google,这里只做简单介绍.推荐简单介绍连接:http://blog.jobbole.c ...

  3. Scala 特殊符号含义

    date: 2019-08-01 11:15:27 updated: 2019-08-22 15:22:32 Scala 特殊符号含义 参考地址 1. ::: :::(三个冒号)只用于连接两个 Lis ...

  4. Scala编程快速入门系列(一)

    目    录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Sca ...

  5. Scala学习笔记——入门

    0.在 scala> 下运行Scala程序 首先cd到.scala文件所在的目录下 scalac这个scala文件,然后import package的名字.object的名字 然后就能使用 ob ...

  6. (转)Scala的“=>”符号简介

    Scala中的=>符号可以看做是创建函数实例的语法糖.例如:A => T,A,B => T表示一个函数的输入参数类型是“A”,“A,B”,返回值类型是T.请看下面这个实例: scal ...

  7. Scala各种符号含义;scala =>符号含义总结

    符号: <- :for循环 -> :map映射 => :匿名函数 Int= :scala函数 _ :通配符 https://blog.csdn.net/bon_mot/article ...

  8. Scala编程快速入门系列(二)

    目    录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Sca ...

  9. Scala语言开发入门

    在本系列的第一篇文章 <使用递归的方式去思考>中,作者并没有首先介绍 Scala 的语法,这样做有两个原因:一是由于过多的陷入语法的细节其中,会分散读者的注意力.反而忽略了对于基本概念,基 ...

随机推荐

  1. InputStream中mark方法使用

    在调用mark的地方做上标记,参数readlimit说明在读取readlimit个字符后书签做废(6.0好像没有失效 ,仍然可以标记位置),使用reset后回到标记的位置.import java.io ...

  2. UML面向对象建模基础

    一个比较好的UML教程PPT https://wenku.baidu.com/view/cf80902e26284b73f242336c1eb91a37f11132ac.html

  3. ASPNET MVC Error 403.14

    今天创建了一个新的ASPNET MVC 项目部署到本地, 生成成功后在浏览器中输入URL却发现报这个错 解决办法: 因为我的站点是4.5的,但是我没有设置Application Pool所以当前还是默 ...

  4. impala安装笔记(Ubuntu)

    1.Override 1.With Impala, you can query data, whether stored in HDFS or Apache HBase – including SEL ...

  5. 删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误,即DeletedRowInaccessibleException

    删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误 =========================================================== 采 ...

  6. vscode:配置git

    1.下载git,并找到安装git的文件位置,并找到git文件夹下面的Bin文件夹    2.配置环境变量 位置:右击‘计算机’->属性->高级系统设置->环境变量 最后点击确定即可 ...

  7. easyui学习笔记5—panel加载其他的页面

    上一篇中我们看到了panel的基本实现,没有什么难度,最重要的是data-options和class两个标签属性的定义.这里我们将看一下在panel中如何加载其他的页面. 1.先看看引用的资源文件和h ...

  8. 汇编试验一:查看CPU和内存,用机器码指令和汇编指令编程

    预备知识: r命令查看,改变CPU寄存器的内容 2.D命令查看内存 3.E命令改写内存 两种方式: 1: 2: 内存中写入机器码 用T命令执行机器码(先将CS:IP指向要执行的内存处) 用a命令写汇编 ...

  9. table中实现数据上移下移效果

    html 由于vue+Element项目中的table,没有开放的上移下移的api,但是能对数据操作,故思路为数组中的一条数据,再重新添加一条数据,办法有点笨,但是好歹也是实现了,望有好的办法的,请留 ...

  10. MacType 文字之美 – 让 Windows 字体更漂亮

    苹果的Mac系统总能让人眼前一亮,除了其精美的软件界面设计外,最重要是其文字显示效果(渲染方式)比 Windows 更加清晰锐利,阅读起来更加舒服.于是就有高手开发了一款叫 GDI++ 的字体渲染引擎 ...