scala

Posted 未央夜色

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala相关的知识,希望对你有一定的参考价值。

综述

学习scala:静态语言,jvm

  • 面向对象和函数式编程相结合
  • 代码简洁效率高(数量级),java相比之下太复杂
  • scala是基于java的,可以无缝调用java代码中的方法/库等
  • 有助于理解spark的核心,一些scala有的spark接口,java中不一定有
  • 命令式编程:通过输入的语句执行命令,有复杂度的概念,复杂度主要取决于行数等。告诉机器干啥,每一步如何干。一步一步执行。

  • 函数式编程:没有可变的状态,所有的都是不可变的。多核下更能发挥速度优势,更强的并发。值告诉程序在哪里做。

下载,配置scala路径
scala_home:scala目录的路径

path:   %SCALA_HOME%\\bin;%SCALA_HOME%\\jre\\bin;
ClassPath:   .;%SCALA_HOME%\\bin;%SCALA_HOME%\\lib\\dt.jar;%SCALA_HOME%\\lib\\tools.jar.;

scala -version   查看scala是否安装成功

基本语法

声明 类型 /值

val 定义常量 定义完常量以后,值不能修改
var 定义变量 定义完之后,值可以修改
一个变量在定义的时候必须被初始化,scala中尽可能的使用不可变变量。

var age1 = 100
val age2 = 100
//报错
age2++    
// 显示的指定变量的类型
val sex:char='m'
val grrade:String="five"

函数

定义 指明变量名,类型。参数名在前,参数类型在后。与java相反(区别)
scala中函数是非常灵活的,可以直接赋值给变量

def add(m:Int,n:Int) = m+n

// 调用没有参数的函数的时候,可以不写
def fun(val:type)
xxxx

匿名函数
val add = (x: Int, y: Int) => x * y
println(add(12,12))

数据类型

和java中的类似,但是功能更强大。方法更多,toString,toDouble等
整型值 Int Long Short Byte
浮点型 Float Double
布尔型 Boolean
字符型 Char String Char
字符串:s.substring(a) 返回的是s从a位置后的所有的字符内容。
var a = 058 数字0代表这是个八进制数

控制结构

for:每次枚举后都会抛弃上一个i,可以实现大部分的循环体功能。
yield保留关键字。对枚举体内的数值,全都保留在yield内。

for ( i<- seq)

println i
 

val c = for (i<- seq) yield i
print c  // 输出的结果是  Vector(10, 11, 12)

if:判断

// 用if实现赋值。
def fun(x:Int,y:Int) = if(语句)
val b = if(a>0) 1 else -1

for 和if配合能试下很多功能

for ( i <- seq if  fun(i)  ) xx else y

match:类似switchcase

num match
case value1 => operation1
case value2 => operation2
case value3 => operation3
case_=> default operation

idea中运行一个scala

1 下载idea的scala插件
2 创建scala项目
3 在项目下创建两个目录

src下创建mian和test目录
main目录下:java scala resource目录。
把main和scala目录的性质不能设置成sources性质
test目录下:java scala resource目录。

以上是关于scala的主要内容,如果未能解决你的问题,请参考以下文章

While 循环 - Scala

Scala:开发环境搭建变量判断循环函数集合

Scala:for循环直到条件

关闭Scala中的循环变量

Scala 循环

scala控制结构:条件表达式与循环