(1)基本语法

变量

val var(可变变量);

数据类型

Byte,Char,Int,Short,Long,String(字符),Float,Double,Boolean(true,flase)。

列子:

val a = 3;  or  val a:Int = 3*//不可变,不能重新赋值
var b = 4.33; or var b:Double = 4.33 *//可变, 可赋值b = 3.9999;

字面量 :

5 + 6 ; == (5).+(6) //scala是纯面向对象语言,+为方法。3 max 5 //(基本数据类型福包装类包含更多运算方法)

自增自减(不能使用a++,a--):

需使用a+=1,a-=1等等

创建Range:

1 to 5 *//Range(1,2,3,4,5) == 1.to(5)
1 until 5*//Range(1,2,3,4)
1 to 10 by 2*//以2为间隔生成Range。
0.5f to 5.9f by 0.3f

输入输出

输入:(import scala.io.StdIn).readInt,readDouble,......

var i = readInt()*//输入整型即可

输出 print,println(输出换行),printf(格式化输出)

println(a), pirntf("output is %d,input is %.2f",a,b)

读写数据

写(import java.io.PrintWriter)

val out = new PrintWrite("path/out.txt");
for( i <- 1 to 5) out.println(i)//写入文件out.txt
out.close

读取(import scala.io.Source)

val readfile = Source.fromFile("out.txt")
val lines = readfile.getLines//返回结果lines为迭代器
for(line<- lines) println(line)

异常处理

例子:

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
try{
val f = new FileReader("path/out.txt")
}
catch{
case ex: FileNotFoundException =>
print("file not found:)
case ex:IOException =>
print("io error")
} finally{
file.close()
}

控制语句(if,while,for)

val x=3
if(x>0){ ...} else if(x=3){...} else{...}*//if语句可以赋值给变量 val a = if(x=0) 1 else 0
where(x>0){ x-=1;printf(...)}
do{x+=1 println(i)}where(x<3) for(i<- 1 to 5) println(i)
for(i<-1 to 5 if i%2==0) println(i)
fro(i<-1 to 5 if i%2!=0;j<-1 to 10 if j!=i) println(i*j)*//多个生成器+守卫(if)
val r = for(i<- 1 to 5 if i%2==0) yield {println(i);i} *//将for生成器生成的所有值收入集合r( Vector(2,4))

(2) 数据结构(容器collection)

*//import scala.collection,scala.collection.mutable(可变),scala.collection.immutable(不可变)默认

列表(List)

val strList = List("me","you","our")* //不可变列表 方法:head,tail
val otherList = "they"::strList
val List1 = 1::2::3::Nil == List(1,2,3)

集合(Set) 不重复元素

var myset = Set("hadop","spark") *//var可变,库为不可变库
myset+="Scala" *//添加元素
*//导入可变包
import scala.collection.mutable.Set
val mySet = Set("a","b")*//val不可变,但Set可变
mySet+="c"

映射(map)

val mymap = Map("a"->1,"b"->2)*//键值对,键是唯一的,值不唯一
print(mymap("a"))*//索引
val c = if (mymap.contain("a")) mymap("a") else 0 *//contain判断键是否存在
*//可变map (import scala.collection.mutable.Map)
mymap("a") = 3* //更新
mymap("c")= 4 *//添加新元素
mymap+=("d"->5,"e"->6) *//add
for((key,value)<-mymap) println(key,value) or for(key<-mymap.keys) print(key) or mymap.values(生成迭代器)

迭代器(Iteration)

val iter = Iteration(1,2,3,4)
while(iter.hasNext) { println(iter.next) } or for(elem<-iter) { printn(iter.next)}

方法:grouped,sliding返回迭代器

val myList = List(1,2,3,4,5)
val a = mylist grouped 3 //按照3分为两组,返回迭代器,a.next=List(1,2,3) a.next = List(4,5)
val b = mylist sliding 3 //3个数滑动 b.next = List(1,2,3) .next = (2,3,4)....

数组(Array)*//(变长数组import scala.collection.mutable.ArrayBuffer)

val myarray = new Array[Int](3)  or val myarray = new Array(2,3,4)
myarray(0) = 1 myarray(1)=2 myarray(2) = 3
for(elem<-0 to 2) { println(myarray(elem)) }

多维数组 :val myarray = Array.ofDim[Int](3,4)

可变数组 :val myarray = ArrayBuffer(10,20,30) myarray+=40 *//方法 insert ,remove

元组(tuple)

*//数据类型可以不同

val mytuple = Tuple("a",1,3) println(mytuple._1) println(mytuple._2) * //索引

Scala 语法(一)的更多相关文章

  1. scala语法在spark withScope上的应用

    withSpout在spark中是用来做DAG可视化的,它在代码里的用法如下(以map为例,spark 2.0.0版本) def map[U: ClassTag](f: T => U): RDD ...

  2. scala语法解析(解码指环)

    看惯了JAVA的语法,再看scala的语法,有的晦涩难懂.正好遇到一个介绍scala语法的文章,就直接截图留念.省的再临时抱佛脚了.

  3. 1.scala语法

    对象的apply方法 (1)对象调用apply()方法,可省略成() (2)string对象的apply方法返回第n个字符 "hello"(4) //'o' if语句的返回值 ja ...

  4. Scala语法笔记

    JAVA中,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala中使用apply的方法 JAVA与C++的?:操作符 等同于Scala的 if ( x &g ...

  5. Java和Scala语法比较

    类型推断 挑逗指数: 四星 我们知道,Scala一向以强大的类型推断闻名于世.很多时候,我们无须关心Scala类型推断系统的存在,因为很多时候它推断的结果跟直觉是一致的. Java在2016 年也新增 ...

  6. Spark记录-Scala语法基础

    参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...

  7. Scala 语法基础

    一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...

  8. scala语法

    1:双重for循环(相当于j是i的内存循环):for (i <-0 to n; j <-10 to 20){ println(i);println(j)} 2:单层for循环:for (i ...

  9. Scala语法(二)

    (1)类,对象 //定义类(属性.方法),实例化对象 class counter{ *//主构造器 class counter(name:String,mode:Int){ ... } 实例化:val ...

随机推荐

  1. ubuntu下root不能复制 abc用户下的软连接文件

    使用root用户去复制,提示权限不足: 那么这个软连接是个什么东西??

  2. 'weblogic.kernel.Default (self-tuning) 问题weblogic层面解决办法

    声明:出现这个问题有程序方面.网络方面.weblogic设置方面等等原因,此文章主要讲述由于weblogic设置而导致的解决办法. 因为: 1.程序问题,需要项目自己去解决,weblogic在做优化处 ...

  3. 11G R2 RAC添加监听

    步骤如下: 检查默认network的network number,红色字体1,一会儿添加监听会用到: [grid@rac121 admin]$ srvctl config network Networ ...

  4. June 19th 2017 Week 25th Monday

    Everyone is dissatisfied with his own fortune. 人对自己的命运总是感到不满足. We always want more, even when we hav ...

  5. 一些SAP Partners能够通过二次开发实现打通C/4HANA和S/4HANA的方法介绍

    有好几位朋友在公众号后台给我留言询问SAP C/4HANA和S/4HANA集成的方案. 尽管我给这些朋友推送了一个方案:打通C/4HANA和S/4HANA的一个原型开发:智能服务创新案例,然而我得到的 ...

  6. stl sort使用不当造成崩溃

    #include <iostream>#include <vector>#include <algorithm>using namespace std; bool ...

  7. 总结一下MVC思想

    MVC (Model View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用 ...

  8. Ubuntu中为Eclipse添加桌面启动快捷方式

    Ubuntu中应用程序启动器“XXX.desktop”还没有被标记为可信任的问题:http://www.tuicool.com/articles/fIBJ32n eclipse问题:prefences ...

  9. AtCoder Grand Contest

    一句话题解 QwQ主要是因为这篇文章写的有点长……有时候要找某一个题可能不是很好找,所以写了这个东西. 具体的题意.题解和代码可以再往下翻._(:з」∠)_ AGC 001 C:枚举中点/中边. D: ...

  10. HDU 1281 棋盘游戏 【二分图最大匹配】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1281 题意概括: 有N*M大的棋盘,要在里面放尽量多的“车”,求最多能放的车的个数,和为了放最多的车有多 ...