scala的符号入门(代码片段)

AmazingCode! AmazingCode!     2022-11-09     368

关键词:

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学习之scala快速入门(代码片段)

文章目录Scala的“味道”Overview概述Hello,worldTheScalaREPLTwotypesofvariablesDeclaringvariabletypesControlstructuresif/elsematchexpressionstry/catchforloopsandexpressionswhileanddo/whileClassesScalamethodsTraits 查看详情

一篇入门--scala反射(代码片段)

本篇文章主要让大家理解什么是Scala的反射,以及反射的分类,反射的一些术语概念和一些简单的反射例子.什么是反射我们知道,Scala是基于JVM的语言,Scala编译器会将Scala代码编译成JVM字节码,编译过程中会擦除Scala特有的一些类型信... 查看详情

大数据进阶之路——scala入门(代码片段)

文章目录概述安装JavaVSScalaval和var基本数据类型lazy在Scala中的应用开发工具IDEAMaven概述https://www.scala-lang.org/Scalacombinesobject-orientedandfunctionalprogramminginoneconcise,high-levellanguage.Scala’sstatictypeshelpavoidb 查看详情

scala入门介绍(代码片段)

2020年4月14日20:17:43参考官方文档:https://docs.scala-lang.org/getting-started/intellij-track/getting-started-with-scala-in-intellij.htmlIntelliJ是Scala开发人员最常用的IDE。在本教程中,我们将引导您完成使用Scala插件下载和设置Intel 查看详情

大数据学习——scala入门练习(代码片段)

packagecom/***CreatedbyZXon2015/11/6.*/objectVariableDemodefmain(args:Array[String])//1定义变量-----------------------------------------//使用val定义的变量值是不可变的,相当于java里用final修饰的变量vali=1//使用var定义的变量是可变得,在Scal 查看详情

scala成长之路函数入门(代码片段)

众所周知,scala作为一门极客型的函数式编程语言,支持的特性包括:函数拥有“一等公民”身份;支持匿名函数(函数字面量) 支持高阶函数 支持闭包 部分应用函数 柯里化首先需要指出,在scala中有方法和函数对... 查看详情

十分钟带汝入门大数据开发语言scala(代码片段)

@TOC一、概述Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。目前最主流的大数据开发框架Spark的实现就是通过Scala去实现的。Scala可以与Java... 查看详情

scalaidea安装配置入门helloworld(代码片段)

ScalaIDEA安装入门ScalaScala(发音为/?skɑ?l?,?ske?l?/)是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在... 查看详情

[符号执行-入门1]软件测试中的符号执行(代码片段)

最近在自学符号执行,因此,这篇经典文章(SymbolicExecutionforSoftwareTesting:ThreeDecadesLater)[1]作为入门必读。0.定义符号执行(SymbolicExecution)是一种程序分析技术,它可以通过分析程序来得到让特定代码区域执行的输入。顾名思义,... 查看详情

scala常用整理(代码片段)

数据类型Byte8位有符号值。范围从-128到127Short16位有符号值。范围从-32768至32767Int32位有符号值。范围从-2147483648to2147483647Long64位有符号值。从-9223372036854775808到9223372036854775807Float32位IEEE754单精度浮点数Double64位IEEE754双精度浮点数Cha... 查看详情

scala常用整理(代码片段)

数据类型Byte8位有符号值。范围从-128到127Short16位有符号值。范围从-32768至32767Int32位有符号值。范围从-2147483648to2147483647Long64位有符号值。从-9223372036854775808到9223372036854775807Float32位IEEE754单精度浮点数Double64位IEEE754双精度浮点数Cha... 查看详情

scala常用整理(代码片段)

数据类型Byte8位有符号值。范围从-128到127Short16位有符号值。范围从-32768至32767Int32位有符号值。范围从-2147483648to2147483647Long64位有符号值。从-9223372036854775808到9223372036854775807Float32位IEEE754单精度浮点数Double64位IEEE754双精度浮点数Cha... 查看详情

scala入门(代码片段)

  scala定义变量分为两种:var和val。val跟java的final变量类似,一旦初始化就不能重新赋值。而var则不一样,类似于java的非final变量,在声明周期内可以被重新赋值。scala>valmsg="hello,world"msg:String=hello,world  scala定义函数,定义... 查看详情

scala入门基础3(代码片段)

1》类和对象类的定义和简单使用classStudent(name:String,age:Int)varthis.name=namevarthis.age=agedefoutPut():Unit=println("学生:"+this.name+"今年"+this.age+"岁")objectHelloWorlddefmain(args:Array[String])vars=newStudent("王宇",18)s.outPut(); 继承和函数的重载Scala重... 查看详情

scala之数据类型(代码片段)

...数据类型的详细信息的表格:序号数据类型说明1Byte8位有符号值,范围从-128至1272Short16位有符号值,范围从-32768至327673Int32位有符号值,范围从-2147483648至21474836474Long64位有符号值,范围从-9223372036854775808至92233720368547758075Float32位I... 查看详情

spark入门知识讲解和基础数据操作编程(统一用scala编程实例)(代码片段)

在我的上一篇博文中:http://blog.csdn.net/zfszhangyuan/article/details/52538108 讲如何应用scala编程完成用户的在线时长和登录次数在spark上的求解方式。讲到这里有同学可能对编程完后如何将程序放到线上spark集群上运行以及如何理解s... 查看详情

spark快速入门(代码片段)

  spark框架是用scala写的,运行在Java虚拟机(JVM)上。支持Python、Java、Scala或R多种语言编写客户端应用。下载Spark  访问http://spark.apache.org/downloads.html选择预编译的版本进行下载。解压Spark  打开终端,将工作... 查看详情

matlab从入门到精通-matlab中符号推导应用及相关技巧(代码片段)

...,但是难免出错。在战略上手推公式,而在战术上用matlab符号推导辅助和验证可以大幅度减少出错,并提高效率。关于MATLAB系列的精品专栏大家可参见MATLAB-30天带你从入门到精通MATLAB深入理解高级教程(附源码)喜欢的小伙伴可... 查看详情