• 2020寒假 学习进度笔记2:Scala学习


    主要查看教程:

    https://www.runoob.com/scala/scala-tutorial.html

    http://dblab.xmu.edu.cn/blog/spark

    参考:

    https://scala-lang.org/files/archive/spec/2.13

    变量:
    val类型:声明时必须被初始化,且初始化后不能再被赋值

    val str1 = "HelloWorld" 
    val str2 : String = "HelloWorld" //也可以显示出声明变量的类型 

    var类型:声明时需要被初始化,且可以被赋值

    var str1 = "ABC"
    str1 = "DEF"

    Scala允许对“字面量”直接执行方法

    5.toString()

    和Java不同,Scala中没有++和--操作符

    多行字符串的表示方法:"""字符串内容"""

    val str = """Hello
    World
    !"""

    换行符:

    Scala是一种面向行的语言,语句可以用分号(;)结束或换行符结束。若一行只有一条语句,则分号可写可不写;若有多条语句同行,就需要分号。

    引用:

    使用import关键字引用包

    import java.awt.Color    //引入Color
    import java.awt._          //引入包内所有成员

    import语句可以出现在任何地方,而不是只能在文件顶部。import的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性。

    如果想要引入包中的几个成员,可以使用selector(选取器):

    import java.awt.{Color, Font}
     
    // 重命名成员
    import java.util.{HashMap => JavaHashMap}
     
    // 隐藏成员
    import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了

    Scala默认引用java.lang._ 、 scala._ 和 Predef._

    Range:

    创建从1到5的数值序列,包含区间终点5,默认步长为1

    1 to 5    //1,2,3,4,5

    创建从1到5的数值序列,不包含区间终点5

    1 until 5    //1,2,3,4

    创建从1到10的数值序列,步长为2

    1 to 10 by 2    //1,3,5,7,9

     

    if条件表达式:

    基本和Java一样,但它可以给变量赋值

    val x = 1
    val a = if(x > 0) 1 else -1

    for循环:

    for( 变量 <- 表达式) 语句块,其中 “ 变量 <- 表达式 ” 部分被称为生成器

    for(i <- 1 to 5 ) println(i)

    使用守卫(guard)表达式,过滤出满足指定条件的结果(如只输出偶数)

    for(i <- 1 to 5 if i%2==0) println(i)

    Scala支持多个生成器,可以用分号分割

    for(i <- 1 to 3 ; j <- 2 to 5) println(i*j)

    每个生成器都可以添加一个“守卫”

    for推导式:

    对过滤后的结果进行进一步处理,采用yield关键字,对过滤后的结果构建一个集合

    for(i <- 1 to 5 if i%2==0) yield i    

    读写文件:

    写入文本文件

    import java.io.PrintWriter
    val out = new PrintWriter("output,txt:)        //使用相对路径时,保存到当前目录下
    for( i<- 1 to 5 ) out.println(i)           //将1,2,3,4,5写入output.txt
    out.close()

    读取文本文件

    import scala.io.Source
    val in = Source.fromFile("output.txt")
    val lines = in.getLines
    for(line <- lines) println(line)
  • 相关阅读:
    内存检测与优化
    iOS逆向工程(1)
    UIBezierPath 概述
    万能弹窗,点击区域外消失
    逆向传值
    蓝牙开发
    pod
    github
    iOS语音
    图像去噪——分割后处理
  • 原文地址:https://www.cnblogs.com/gothic-death/p/12228198.html
Copyright © 2020-2023  润新知