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的主要内容,如果未能解决你的问题,请参考以下文章