zoukankan      html  css  js  c++  java
  • 快学Scala-04-函数和数组

    1.函数的定义形式
    def add([参数:类型])[返回类型][=]{方法体}
    注意:方法体的return 不是必须的,最后一句默认返回
    方法体的花括号可以没有
    总之 可以没有参数,没有返回值,没有=号,没有花括号,没有return
     
    def add(a:Int,b:Int):Int={
        return a+b
    }
    
    def add(a:Int,b:Int):Int={
         a+b
    }
    
    def add(a:Int,b:Int):Int=a+b
        
    def add(info:String) {printf(info)}    
    def add(info:String)= println(info)
     
    2.函数参数的默认值
    def echo(per:String,info:String,post:String):String={
        per+info+post
    }
    echo("[[","hello","]]")
    
    若果[[和]]的出现概率特别高,可以设置为默认
    def echo(per:String="[[",info:String,post:String="]]"):String={
        per+info+post
    }
        必须指明赋值给哪一个参数,默认是第一个参数
    call: echo(info="hello")   
     
    3.不定长参数
    def add(m:Int*):Int={
        var sum=0
        for(x <-m){
            sum+=x
        }
        sum
    }
    add(1,2,3,4,5)
    add(1 to 5 :_*)
    
    使用 add(1 to 6) 是不行的,因为参数类型不对
    可以add(1 to 5 :_*) 来迭代一个range
     
    4.数组的定义
    val arr= new Array[Int](5)
    val arr2 = Array(1,2,3,4,5)
    val arr3=Array(1 to 10:_*)
    Result:
    arr: Array[Int] = Array(0, 0, 0, 0, 0)
    arr2: Array[Int] = Array(1, 2, 3, 4, 5)
     
    在Scala当作,数组的长度是不刻改变的,类似于Java
    5.数组的切片(切分)
    val arr3=Array(1 to 10:_*)
    
    arr3.splitAt(3)  //只能分成两段
    res0: (Array[Int], Array[Int]) = ([I@30bd41ae,[I@d5df719)
                                                   
    arr3.slice(2,5)  //前包后不包 相当于subString(begin,end)
    res1: Array[Int] = Array(3, 4, 5)
     
    6.数组的迭代
    val arr3=Array(1 to 10:_*)
    arr3.foreach(println) 
    
    for(x <-arr3){
        println(x)
    }
     
    高阶函数,也就是函数调用函数,把函数名println 传递给高阶函数foreach()
    7.变长数组
    mutable :可变的
    import scala.collection.mutable.Arraybuffer
    var arr= ArrayBuffer(1 to 10:_*)
    arr+=5
    arr.insert(1,5)  //(index ,value)
    arr.foreach(println)
    //添加一个集合
    arr++=Array(1,2,3)
    
    arr-=3    //第一个value的3 被移除
    arr--=Array(1,2,3)
    arr.remove(5) //remove(index)  根据position返回被移除的value
    arr.remove(offerset,deleteNumber)  //删除多个  (偏移量,删除多少个)
    arr(1)     //通过下标找value
    arr.indexOf(4)  //通过value找下标
     
     
    《快学Scala》高清中文PDF+源代码
    提取码:an5d 
  • 相关阅读:
    QLineEdit控件只能输入数字--QValidator结合正则
    谈 Linux,Windows 和 Mac (转自 王垠)
    看了王垠的文章《对Rust语言的分析》
    unsigned int 无符号整型的使用
    Qt布局Layout设置完全填充(设置Layout的Margin值)
    C#批量删除Mysql中相同前缀的表格
    libusb
    NPOI -- 读取excel表格中的时间格式
    spring项目启动执行
    kafka安全(一)SASL+ACL
  • 原文地址:https://www.cnblogs.com/feixiaobai/p/74c58a49bba92ee14514e06aa24adae2.html
Copyright © 2011-2022 走看看