zoukankan      html  css  js  c++  java
  • scala 学习笔记

    val x:T val x:T=e 声明一个常量
    var x:T var x:T=e 声明一个变量

    def abc(x:T):T=e
    def adder(m:T,n:T)=m+n

    数值类型:
    整型值:Int Long Short Byte
    浮点型:Double,Float
    布尔值:Boolean(true/false)
    字符值:Char,String
    除了String归Java.lang 其他均归于scala包

    val one6='aaa' char类型是单引号
    val one6="aaa" String类型是双引号

    scala 没有任何操作符,所有的操作符运算都是对方法(函数)的调用
    如1+2 实际是1调用了.+()这个方法 1.+(2)

    for(i <- 1 to 4)
    println("NO."+i)


    1 to 4 (1=<i<=4);1 until 4 (1=< i <=4-1)

    定长数组声明
    val A=new Array[T](N) 即:val A=new Array[Int](10)

    val B= Array("aa","bb")
    变长数组声明
    val C=new ArrayBuffer[T]()
    C+=e
    C+=(e1,e2)
    C++=Array(e3,e4)
    C.trimEnd(2) 从数组末尾移除2个元素
    C.insert(2,e3,e4)在第二个元素后插入e3,e4
    C.remove(3)移除第三个元素后的一个元素
    C.remove(3,2)移除第三个元素后的两个元素
    D=C.toArray 变长数组转换为定长数组D
    D=A.toBuffer 定长数组转换为变长数组D

    还可以val G=B+Array("cc","dd") val G=B-Array("aa")

    通过for 语句枚举数组成员,把数组成员各加1并生成新数组
    val new=for(i<- c) yield i+1

    scala 映射
    数组是包含一组元素的集合,映射是包含一组键值对元素的集合

    对于不可变映射
    val scores = Map("Alice" -> 10, "Bob" -> 33) //构造一个不可变的Map[String,Int]
    val ss=scores +(a4->b4,a5->b5) //增加
    val ss1=scores -(a4->b4,a5->b5)
    构造可变映射:
    val treasuremap=Map[Int,String]() //key是int类型,value是string类型
    val scores2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 33) //构造一个可变的映射
    scores2 +=(a4->b4,a5->b5)
    scores2 -=a4

    映射的枚举
    for((i,j)<-Z) E(i,j)
    获取映射的键或值
    val e=Z.keySet
    val f=Z.values

    元祖是不同类型值的集合
    val g=(1,1.2,"sss")
    利用方法_1,_2,_3访问元祖的元素
    val h=g._1或 val h=g _1 (空格)



    class hello{
    private val value1="hello"
    var value2="world"
    def add(){println(value1+value2)}
    def plus(m:Char)=value2+m

    }

    类声明后利用new声明对象
    val one=new hello

    scala对每个类中的字段都提供getter和setter方法
    var 声明的字段有getter和setter方法(读写)
    val 声明的字段只有getter方法,没有setter方法

    每个类都是有主构造器,且与类定义交织在一起

    class hello(val va1:String,var va2:String){
    println("ssssss")
    val value3=val+va2
    }

    val two=new hello("wlllcome","home")


    scala允许任何语法结构中嵌套任何语法结构
    class a{ pointto => //pointto指向外部类a
    var value2="sss"

    class b{
    val values3=a.this.value2
    var value4=pointto.value2

    }


    通配符“_”表示任意,"_*"表示任意长度
    }


    scala对象

    object语法定义了某个类的单个实例

    伴生对象
    当一个单例对象存在同名类的时候,称为伴生对象

    scala特质

    args.foreach(arg=>println(arg))等价于 for(arg<- args) println(arg)


    package com.persia

    object FuncReturnType {

    //写法一,始终待返回值
    def add(x:Int,y:Int):Int={
    x+y
    }

    def returnUnit():Unit={
    println("another way to return void")
    }

    //写法二,省略非Unit返回值;如果没有写返回值,则根据等号后面的东西进行类型推演
    def test(x:Int)={
    x
    }

    //写法三,省略等号,返回Unit
    def returnVoid(){
    println("return void")
    }

    //写法四:省略花括号,如果函数仅包含一条语句,那么连花括号都可以选择不写
    def max2(x: Int, y: Int) = if (x > y) x else y

    def greet() = println("Hello, world!")

    def main(args:Array[String]):Unit ={
    println(add(1,2))
    println(test(1))
    }

    }

  • 相关阅读:
    解题:POI 2006 Periods of Words
    解题:NOI 2014 动物园
    1483. 最高平均分
    1438. 较大分组的位置(回顾)
    1258. 漂亮子数组
    1903. 部门统计(回顾)
    1509. 柠檬水找零
    1451. 到最近的人的最大距离
    1425. 比较含退格的字符串
    1394. 山羊拉丁文
  • 原文地址:https://www.cnblogs.com/luo-mao/p/5872435.html
Copyright © 2011-2022 走看看