什么是 Scala (运算、集合、函数、循环)

1 篇文章 1 订阅
订阅专栏

什么是 Scala

简介

  • 目前主要以学习 Scala 语言 作为 学习 Spark 框架的语言基础

概念

  • scala 是一门以 jvm 为运行环境的静态类型编程语言,具备面向对象及函数式编程的特性

官网

  • Scala 官网首页
  • 对应 Spark 版本文档

六大特征

  • 1、Java 和 scala 可以混编
  • 2、类型推测(自动推测类型)
  • 3、并发分布式( Actor)
  • 4、特质,特征(类似 java 中 interfaces 和 abstract 结合)
  • 5、模式匹配(类似 java 中的 switch…case )
  • 6、高阶函数

Scala 应用场景

  • Kafka分布式消息队列,内部代码经常用来处理并发问题,用scala 可以大大简化其代码
  • spark:方便处理多线程场景,另外 spark 主要用作内存计算,经常要用来实现复杂的算法。利用Scala 这种 函数式编程语言 可以大大简化代码

标识符(驼峰命名法)

  • 区分大小写
    • Scala 是大小写敏感
  • 类名
    • 对于所有的类名首字母大写
    • 如果需要使用几个单词来构成一个类的名词,每个单词的首字母大写
  • 方法名
    • 所有的方法名称首字母小写
    • 如果若干单词被用于构成方法的名称,则每个单词的首字母大写
  • 程序文件名
    • 程序文件的名称应该与对象名称(Scala 是区分大小写的),并追加".scala"为文件扩展名

数据类型

在这里插入图片描述

注意:

  • 比较特殊的 None ,是 Option 的两个子类之一,另一个是 Some ,用于安全的函数返回值。
  • scala 推荐在可能返回空的方法使用 Option[X] 作为返回类型。
  • 如果有值就返回Some[X]无值则返回 None

运算

常量与变量

  • 定义常量(val):val name:type = initialization
  • 定义变量(var):var name:type = initialization

运算符表达式

  • 算术运算符:±*/%

  • 关系运算符:- >,<,>=,<=,==,!=

  • 逻辑运算符: &&与,||或 ,!非

  • 赋值运算符: = , + = , - = …等

  • 位运算符:&与,|或,^ 取反

集合

列表

  • 类型

    • (1)List 列表,相同元素类型
    • (2) Set 没有重复的集合
    • (3) Map 可迭代键值对集合
    • (4) Tuple元组,可包含不同类型的元素,圆括号

数组

  • 声明数组格式:var z:Array[String] = new Array[String] (num) 或 var z = Array(元素1,元素2,…)

  • 数组基本操作方法

    • 增:++ 或 concat

    • 长度 : arr.length 返回数组的长度

    • 是否为空:arr.isEmpty 判断数组是否为空

定义函数

Scala常用数据类型

  • Int 整型(byte,short,long)
  • Float 浮点数
  • Double 双精度浮点数
  • String 字符序列(char)
  • Boolean 逻辑型(True或False)
  • Unit 表示无值,与void等同(null,nothing,any)

声明函数

  • def functionName (参数列表) : [return type] = { }
 def add(a:Int,b:String):Int = { print(a+b)}

函数

  • 匿名函数

    • 定义函数不给出函数名,用“=>”表示
     var  addInt = (a:Int,b:Int) => a+b ;    // 格式:参数列表 => 函数体
    
  • 高阶函数

    • 函数作为参数
    • 函数作为返回值
  • 常用函数

    • range函数
    range(1,10,2)    // 前闭后开,步长为2
    
    • 读取文件
     Source.fromFile( 文件路径 )
    
    • 写入文件
    new PrintWriter( 文件路径 ).write( '  ****** ' ).close 
    

函数组合器

注意: 对RDD的操作,即返回一个新的RDD

  • map 重新计算

     List (1,2,3).map( x => x*2 ) : List
    
  • foreach 对参数进行作用

     List ( 1,2,3 ).foreach( x => print( x*2 ) : Unit    // 在原来原来元素上操作
    
  • filter 过滤

    List ( 1,2,3 ).filter ( x => x%2==0 ) : List
    
  • flatten 降维打击

    List(List ( 1,2,3 ),List(1,2,3),List ( 1,2,3 )).flatten : List
    
  • flatMap 结合,先map后flatten

    List(List ( 1,2,3 ),List(1,2,3),List ( 1,2,3 )).flatMap(x => x *2 ) : List
    
  • groupBy 分组,结果Map

     List ( 1,2,3 ).groupBy( x => x%2 == 0 ) : Map
    

循环判断

(1)判断

  • if 、if…else 、if…else if… else语句、if…else嵌套

  • match 模式匹配

    x match { case 1 => fun1 ;  case 2 => fun2 ; case _* => fun3}  // 类似于switch
    

(2)循环

  • while 、do …while 和 for 循环
  • for循环
    for  ( 变量 <- 集合 ){  循环语句  }
    for ( i <- 1  to  10 ){ print(i) }   // to 前闭后闭
    for (i  <- 1 until 10 ){ print(i) }  // until 前闭后开
    for (i  <- 1  to  10 ;  if (i%2==0; if  i >6){ print(i) }   // 多个判断条件间用”;“ 
    

哈哈没了,到底了,Scala 语言还要很多有意思的功能,有兴趣的可以去搜一下其他博主的文章哟,他们总结的都很棒

Scala简介
qq_46087202的博客
03-24 3776
目录 一、Scala简介 1.1 概念 1.2 特点 1.3 Scala的优点 二、Scala基本数据类型和运算符 一、数据类型 1.1 类型支持 1.2 定义变量 1.3 类型推断 1.4 Scala解释器 二、字面量 2.1 整数字面量 2.2 字符串字面量 2.3 符号字面量 2.4 插值表达式 三、运算符 3.1 运算符即方法 3.2 逻辑运算符 3.3 赋值运算符 3.4 运算符优先级 3.5 对象相等性 一、Scala简介 1.1 概念 Sca
scala的数组及集合函数详细总结(详细示例分析)
blessness的博客
09-12 1232
@[TOC] (目录) 三级目录
Scala 1
sj天问的博客
11-20 202
Scala介绍 什么是Scala 从英文的角度来讲,Scala并不是一个单词,而是Scalable Language两个单词的缩写,表示可伸缩语言的意思。从计算机的角度来讲,Scala是一门完整的软件编程语言,那么连在一起就表示Scala是一门可伸缩的软件编程语言。之所以说它是可伸缩,是因为这门语言体现了面向对象,函数式编程等多种不同的语言范式,且融合了不同语言新的特性。 Scala编程语言是由联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计并开发的。由于
Scala是什么?
fanminglu的博客
02-24 568
注:笔者最近在学习Scala这门语言,将学习笔记整理在此,共享。Java盛行之后,逐渐显示了它的弊端:静态语言编程会导致大量的固定写法的代码。通常认为我们应该避免静态类型从而消除这种代码,于是人们对动态语言如Python,Rubby和Groovy的兴趣开发增加,这种认知被马丁最近的作品--Scala的出现打破。Scala是一种很有品味的类型语言,它是静态类型的,但仅需必要的地方显式定义类型。Sca...
Scala学习第一弹 Scala简介
任俊杰的博客
08-10 534
一.scala简介 ScalaScalable Language 的简写,是一门多范式的编程语言 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。 Funnel是把函数式编程思想和Petri网相结合的一种编程语言。 Odersky先前的工作是Generic Javajavac(Sun Java编译器)。Java平台的Sc
什么是scala?scala有什么用?
Sunshine_2211468152的博客
09-19 5771
1.scala是什么?           Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。http://www.scala-lang.orgScala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并...
Scala语言学习笔记——集合的高阶函数
程序猿丶HLK
05-24 426
集合的高阶函数 1.高阶函数 def map[B](f: A => B):B 2.高阶函数flatmap flatmap:flat即压扁,压平,扁平化,效果就是将集合中的每个元素的子元素映射到某个函数并返回新的集合。 3.高阶函数 filter filter:将符合要求的数据(筛选)放置到新的集合中。 4.高阶函数reduceLeft和re...
Scala集合归纳
xiaohu21的博客
09-08 529
Scala集合归纳 1. 背景 2. 序列 3. Set 4. 元组 5. Map 6. Option 7.常见集合方法
Scala笔记——道】Scala 循环遍历 for详解
热门推荐
Contributor -> Committer
06-22 1万+
Scala for循环 基本使用 增强型for循环 scala基本for循环如下,代码将names遍历并打印包含的名字。 val names = Seq(&quot;Kitty&quot;, &quot;Tom&quot;, &quot;Luke&quot;, &quot;Kit&quot;) for (name &amp;lt;- names) { println(name) } 相较Java,语法层面
第7章 scala集合
牛牛
06-11 269
Scala集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质。对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本。可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变,所以这里的不可变并不是变量本身的值不可变,而是变量指向的那个内存地址不可变可变集合和不可变集合,在scal
Scala考试题1
08-08
1.var,val和def三个关键字之间的区别 2.trait(特质)和abstract class(抽象类)的区别 3.object和class的区别 4.c
java练习题——双色球
bolinmengling的博客
06-09 408
写一个双色球程序:javascala 双色球:蓝球+红球组成的彩票一注 蓝球:1~16的号码组成 红球:1~32的号码组成 一注双色球:6个红球+1个篮球组成的 要求大家写一个程序,每次都能随机一注彩票
scala实现彩票算法
weixin_33836874的博客
06-04 359
scala实现彩票算法 (1)具体实现代码如下: package hw1 import scala.util.control._ /** * @author BIGDATA */ object Cp { var input=new Array[Int](7) var cp=new Array[Int](7) var level=0 def ma...
什么是Scala
qq_46174647的博客
10-24 591
一.概述 为什么要学习scala Scala是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala运行在Java虚拟机上,并兼容现有的java程序。 Scala源代码被编译成java字节码,所以它可以运行于JVM之上,并可以调用现有的java类库。 Scala发展历史 联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。 马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效
scala简介 什么是Scala
春和的博客
04-26 2211
 从英文的角度来讲,Scala并不是一个单词,而是Scalable Language两个单词的缩写,表示可伸缩语言的意思。从计算机的角度来讲,Scala是一门完整的软件编程语言,那么连在一起就表示Scala是一门可伸缩的软件编程语言。之所以说它是可伸缩,是因为这门语言.
什么是Scala语言?
weixin_43800980的博客
03-08 538
Scala的初步认识 Spark—新一代内存级大数据计算框架,是大数据的重要内容。 Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。 ScalaScalable Language 的简写,是一门多范式(范式/编程方式[面向对象/函数式编程])的编程语言 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年开始设计Scala ...
什么吗是Scala?为什么要学Scala
十色花的博客
07-07 5542
ScalaScala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。2.速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,G...
写文章

热门文章

  • Hadoop集群 手动主备切换 (Active - Standby) 14885
  • SVN :one or more files are in a conflicted state 一个或多个文件处于冲突状态 14509
  • Hadoop 重新格式化NameNode 13904
  • win10无法设置移动热点 (没有 Adapter #2) 13697
  • 什么是 ClickHouse(实时数据分析数据库) 11406

分类专栏

  • 人工智能
  • ETL 工具 2篇
  • IDEA 1篇
  • SQL 1篇
  • 大数据面试题
  • 数仓服务框架 1篇
  • Spark 1篇
  • Flink 实时处理框架 2篇
  • OLAL数据处理 2篇
  • 大数据-Hadoop 4篇
  • 纠错集 15篇
  • 大数据-HBase 2篇
  • Kafka 4篇
  • Linux 16篇
  • 数据结构和算法
  • 大数据-Hive
  • echarts 21篇
  • Java 1篇
  • Redis 6篇
  • Docker 10篇

最新评论

  • IDEA Kafka:The configuration ‘xxx‘ was supplied but isn‘t a known config

    并州刺史: 是的,重启是告诉外行人的思路,你是编程的

  • IDEA Kafka:The configuration ‘xxx‘ was supplied but isn‘t a known config

    ToString_1024: 为啥要删除,是处理思路不对吗?

  • win10无法设置移动热点 (没有 Adapter #2)

    m0_70095285: 左上角 查看→显示隐藏设备

  • beeline : Error: Could not open client transport with JDBC | datagrip UnknownHostException: xxxx连接失败

    拾六_: 感谢!!解决了

  • IDEA Kafka:The configuration ‘xxx‘ was supplied but isn‘t a known config

    并州刺史: 把这篇博客删了吧

最新文章

  • IDEA Kafka:The configuration ‘xxx‘ was supplied but isn‘t a known config
  • IDEA Kafka:Connection to node -2 could not be established. Broker may not be available
  • Flink:The generic type parameters of ‘Collector‘ are missing 类型擦除
2023年4篇
2022年5篇
2021年97篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寧三一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家山东大型商场美陈价格郑州镂空玻璃钢雕塑厂小品玻璃钢动物雕塑规定玻璃钢雕塑易县本地玻璃钢雕塑高品质的选择河南玻璃钢花盆供应许昌玻璃钢卡通雕塑定做厂家河北大型商场创意商业美陈策划标准玻璃钢雕塑重不重浦东新区玻璃钢雕塑常用解决方案彭州玻璃钢胸像雕塑贵阳玻璃钢雕塑报价端州玻璃钢抽象雕塑公司苏州惠州玻璃钢雕塑重庆玻璃钢雕塑卡通大型玻璃钢雕塑视频定做形象卡通游乐园玻璃钢雕塑福建水果蔬菜玻璃钢雕塑玻璃钢雕塑模具的制作流程钢玻璃钢雕塑济南景观小品玻璃钢雕塑来宾玻璃钢雕塑公司肇庆商场玻璃钢动物雕塑天虹百货商场美陈雕刻玻璃钢雕塑设计深圳形象玻璃钢雕塑西安牢固玻璃钢座椅雕塑玻璃钢雕塑都用什么材料玉林玻璃钢雕塑用途平凉广场玻璃钢雕塑公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化