scala(一)

来源:互联网 发布:python 内容管理系统 编辑:程序博客网 时间:2024/05/19 12:39

综述

学习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 = 100val 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 * yprintln(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 iprint 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 => operation1case value2 => operation2case value3 => operation3case_=> default operation}

idea中运行一个scala

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

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