Scala

基本语法

1.区分大小写

2.类名中所有单词首字母大写

3.方法名称除了第一个单词,首字母都要大写

4.程序名应与对象名一致

class如同java中的类
object 代表创建单例模式,创建一个静态实例,才能进行编译内部的主函数

变量声明:var myVar=10;                      //尽量初始化,否则要定义类型,并new或者 = _

常量声明:val myVal="Hello scala";

也可以声明元组:val pair=(2019,"scala");

访问修饰符

Private:只有包含该成员的类或者对象的内部可以使用

Protected:允许子类使用

public: 任何地方

方法与函数

方法是类的一部分

函数是一个对象可以赋值给一个变量

val定义函数

def定义方法

对于交互式编程:

class Test{
  def m(x: Int) = x + 3     //方法。  调用方法:m(10)
  val f = (x: Int) => x + 3  //函数。  调用方法:f(10)  
}

对于编写一个a+b的方法
object Test {
   def main(args: Array[String]) {
        println( "Returned Value : " + addInt(5,7) );
   }
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b
      return sum
   }
}

 

👆代码中没有分号是正常行为,同一行中最后一个分号可以省略

字符串

默认为String,和java一样是不可变的,(如果要改变,会自动生成新的对象),与之相对的是String Builder

val buf = new StringBuilder;
buf += 'a'                  //加一个字符
buf ++= "bcdef"             //加一个字符串

获取长度:length

连接两个字符串:concat

等等

数组

var z = new Array[String](3)
或 var z = new Array("Hello", "world")
遍历:
for( x <- z ){
println( x )
}
多维度
var z = ofDim[String](3,3)

集合

List/Set/Map/元组

var x = List(1,2,3,4)

var x = Set(1,3,5,7)

var x = Map("one" -> 1, "two" -> 2, "three" -> 3)

var x = (2019, "scala")

 

迭代器

it.next()返回迭代器下一个元素

it.hasNext()判断集合是否还有元素

it.max/it.min获取最大/最小

it.size/it.length获取元素的个数

等等

其中有很多关于集合的操作

.map()          可以把里面的内容按要求来变化例如. Map[String,List[String]].map(kv => (kv._1,kv._2.size))就换转化为Map[String,Int]

.filter()          按照要求来过滤                     例如  Set[Int].filter(v => v>100)   过滤出大于100的值

.groupBy()     按要求分组                           例如  List[(String,Int)].groupBy(x => x._1) 按照String转化为 Map[String,List[(String,Int)]]

scala中多线程

可以多次创建线程,类是 extends Thread

对于生产者消费者可以用BlockingQueue,(有阻塞与抛异常的操作)

我们可以设定queue的大小,然后没有空间或者资源,就让其阻塞即可

对于需要公用的也可以用synchronized来进行同步

也可以设置线程池,产生future=Future[]的类型,当future andThen产生结果时,case出Success和Failure两种类型

posted @ 2019-01-31 13:35  注册以后还能改吧  阅读(142)  评论(0编辑  收藏  举报