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

什么是 Scala

简介

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

概念

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

官网

六大特征

  • 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 语言还要很多有意思的功能,有兴趣的可以去搜一下其他博主的文章哟,他们总结的都很棒

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寧三一

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

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

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

打赏作者

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

抵扣说明:

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

余额充值