博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala 基本语法
阅读量:5165 次
发布时间:2019-06-13

本文共 6815 字,大约阅读时间需要 22 分钟。

/**   * 测试  for 循环   */  def testFor(){    for(i <- 1 to 10){      println("number is :"+i)          }   for(i <- 1 to 2; j <- 1 to 2) print(i*100 + j+"   ")    for(i <- 1 to 2; j <- 1 to 2 if i != j) print(i*100 + j+"   ")   }

2.测试增强 for 循环

/**   * 测试增强 for 循环   */  def testFor2(){    var files = new java.io.File("D:/").listFiles()    for(file <- files){//      println(file)    }  }

3.测试 if

/**   * 测试   if   */  def testIf(){    def file = ""    def str = if(file != "") file else "b.txt"       print(str)  }

4.

/**   * 测试  Tuple (元组)   */  def tuple(){    val  pair = (100, "scala", "spark")    println(pair._1+" "+pair._2+" "+pair._3)  }

5. 测试 map

/**   * 测试  map   */  def testMap(){    val tMap = Map("scala" -> 20, "spark" -> 30)    print(tMap.getOrElse("scala", 0))   获取 key 为 scala 的值,  如果没有值,   则设置默认值为 0    for((k, v) <- tMap){      println("key is:" +k +"  value is:"+v)    }        //循环 key    for((k,_) <- tMap){      println("key is:"+k)    }    //循环 value    for((_,v) <- tMap){      println("value is:"+v)    }  }

6. 测试 数组

/**   * 测试  数组   */  def testArray(){    val array = Array(1,2,3,4,5)    for(i <- 0 until array.length){      print(array(i))    }    println()        for(tem <- array){      print(tem)          }    println()  }

7. scala 读取文件

/**   * scala 读取文件   */  def testFile(){   val file = Source.fromFile("D:/a.txt") // val file = Source.fromURL("http://www.youku.com")   for(line <- file.getLines()){     println(line)   }  }

8.  函数

def addA(x: Int) = x + 100//匿名函数      var add = (x:Int) => x+200      print(add(2))

9. 递归函数

def fac(n:Int):Int = if(n <= 0) 1 else n*fac(n-1)      println(fac(10))

10.  有参函数

def combine(content:String, left:String, right:String) = left+content+right      println(combine("test", "[","]"))         def combine(content:String, left:String="[", right:String="]") = left+content+right     println(combine("test"))

 10.  数组

val arr = new Array[Int](10)              //> arr  : Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)      arr(0) = 1      for(ar <- arr) print(ar)                  //> 1000000000            val nums = new Array[Int](10)             //> nums  : Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)    nums(0) = 1    for(num <- nums) print(num)                   //> 1000000000        val strs = new Array[String](10)              //> strs  : Array[String] = Array(null, null, null, null, null, null, null, null                                                  //| , null, null)    strs(1) = "spark"    strs(2) = "scala"    strs                                          //> res0: Array[String] = Array(null, spark, scala, null, null, null, null, null                                                  //| , null, null)    for(str <- strs) print(str)                   //> nullsparkscalanullnullnullnullnullnullnull        val arrs = Array(1,2,3,4)                     //> arrs  : Array[Int] = Array(1, 2, 3, 4)    for(arr <- arrs) print(arr)                   //> 1234        val b = ArrayBuffer[Int]()                    //> b  : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()    b+=1                                          //> res1: com.test.Test4.b.type = ArrayBuffer(1)         b+=(2,3)                          //> res2: com.test.Test4.b.type = ArrayBuffer(1, 2, 3)         b++=Array(4,5,6)                  //> res3: com.test.Test4.b.type = ArrayBuffer(1, 2, 3, 4, 5, 6)                  b.insert(1,8,9)  //向下标为 1 的位置插入 8, 9         b                                 //> res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 8, 9, 2, 3,                                                  //|  4, 5, 6)                  b.remove(1,2)         b                                 //> res5: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5,                                                  //|  6)         b.toArray                         //> res6: Array[Int] = Array(1, 2, 3, 4, 5, 6)                           val c = Array(1,6,3,4,5)          //> c  : Array[Int] = Array(1, 6, 3, 4, 5)         val result = for(c1 <- c) yield 10*c1   //使用  yield 将会使结果 产生一个新的数组                                                  //> result  : Array[Int] = Array(10, 60, 30, 40, 50)         result                            //> res7: Array[Int] = Array(10, 60, 30, 40, 50)                  var result2 = for(c1 <-c if c1%2==0) yield 10*c1   //for中可以含有 if 条件语句                                                  //> result2  : Array[Int] = Array(60, 40)                  val d = c.filter(_%2 == 0).map(10*_)   //一般使用这个方法来进行过滤和计算                                                  //> d  : Array[Int] = Array(60, 40)         d.sum                             //> res8: Int = 100         d.sorted     //排序                 //> res9: Array[Int] = Array(40, 60)                           val f = Array(2,3,1,98,3)         //> f  : Array[Int] = Array(2, 3, 1, 98, 3)         scala.util.Sorting.quickSort(f)  //快排         f                                 //> res10: Array[Int] = Array(1, 2, 3, 3, 98)                  f.mkString(" and ")   //以   and  来链接所有元素                                                  //> res11: String = 1 and 2 and 3 and 3 and 98                  f.mkString("{
", ",", "}") //对元素左侧增加 { 右侧增加} , 中间以 , 号隔开 //> res12: String = {1,2,3,3,98} f //> res13: Array[Int] = Array(1, 2, 3, 3, 98) //二维数组 val matrix = Array.ofDim[Double](3, 4) //> matrix : Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0 //| , 0.0, 0.0, 0.0), Array(0.0, 0.0, 0.0, 0.0)) matrix(2)(1) = 55 matrix //> res14: Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0 //| .0, 0.0, 0.0), Array(0.0, 55.0, 0.0, 0.0))
View Code

11.  元祖

var tup = (1,2,33,4,5)  val (a,b,_,_,_) = tup    //每个元素对应元祖中的每个元素, 没有定义的可以使用_ 占位符来一一对应print(a+b)

12. partition   来判断元素是否否和某个特性,  结果会将是和否的分开放到一个集合中

    val np = "Rocky Spark".partition(_.isUpper)      print(np)          //结果为: (RS,ocky park)

13, zip 的使用,   2个数组中相同下标构成新的元素,  拉链操作

val symbols = Array("[", "-", "]")val count = Array(2,5,2)val sy = symbols.zip(count)for((x,y) <- sy) Console.print(x+y)   //结果: [2-5]2   交替相加println()for((x,y) <- sy) Console.print(x*y)   //结果: [[-----]]   以 count 个数展示 symbols

14. scala 中 类的使用

class People(){  //scala 中会自动生成 get set 方法,    private var age1 = 30     //生成private 类型的 get set 方法    var age2 = 20         //生成 public 类型的 get set 方法   } def main(args: Array[String]): Unit = {
   var people = new People   // print(people.age1)    print(people.age2)
}

 

转载于:https://www.cnblogs.com/redhat0019/p/9284538.html

你可能感兴趣的文章
经验人士的IOS APP设计心得
查看>>
teleport使用说明
查看>>
IdentityServer4 登录使用数据库
查看>>
从PDF中提取信息----PDFMiner
查看>>
极简Node教程-七天从小白变大神(一:你需要Express)
查看>>
Windows环境配置Apache+Mysql+PHP
查看>>
内网端口映射详解(花生壳)
查看>>
回调和回显有什么区别?
查看>>
业务逻辑与数据解耦+单元测试
查看>>
mysql数据备份
查看>>
Ural Timus 1009 K-based Numbers (dp+矩阵快速幂+快速乘)
查看>>
[经验总结] 从其它sheet页引用数据生成图表时没有图例的解决办法
查看>>
RabbitMQ(消息队列)私人学习笔记
查看>>
webApp开发
查看>>
Flask-Web开发(第一部分)
查看>>
程序猿,你也配吃10元的盒饭?
查看>>
zkw线段树模板练习。
查看>>
js生成随机数的方法实例总结
查看>>
C#小程序飞行棋地图绘制
查看>>
JVM(虚拟)内存中的堆和栈
查看>>