scala函数参数

31 阅读1分钟

scala函数参数默认值

1:定义有默认值的函数

格式:def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)

定义函数时不加(),调用时同意不要用()

object txy34 {
  def main(args: Array[String]): Unit = {
    def hello(name:String="王俊凯", age:Int=16, sex:String="女") = {
      println(s"Hello,我是${name},${age}岁,性别:${sex}")
    }
    hello("王源",18,"男")
    hello("王源",18)
    hello("王源")
    hello()
  }
}

2:创建不带默认值的函数

def hello = { println("Hello") }

hello

即是输出Hello

3:跳过默认值变参的方法

def hello(name:String="王俊凯", age:Int=16, sex:String="女") = {
  println(s"Hello,我是${name},${age}岁,性别:${sex}")
hello(age = 18)
hello(sex = "男", name = "王扁") 

3:创建接受变参的方法

在Scala中创建接受变参的方法为:参数类型*,这种方式只能接受同一类型的参数。

功能:求所有参数的累加
变参特点:函数中的参数的个数是不确定的。思路:找一个容器把参数全部装起来!!!
写法: 参数类型后面加*

object txy35 {
  def main(args: Array[String]): Unit = {
    def sum(args:Int*):Int = {
      var sum = 0
      for(i <- args){
        sum += i
      }
      sum
    }
    val result1 = sum(1)
    val result2 = sum(1,2,3,4,5)
    println(result1)
    println(result2)
  }
}

例题

1:判断给定的三边能否构成三角形

object txy36 {
  def main(args: Array[String]): Unit = {
    def sj(a:Double,b:Double,c:Double):Boolean = {
      a+b>c && a+c>b && b+c>a

      }
    var r = sj(1,2,3)
    print(r)
    }

  }

2:判断一个数是不是素数

object txy37 {
  def main(args: Array[String]): Unit = {
    def su(num:Int):Boolean = {
      var su = true
      for(i <- 2 to num-1){
        if(num % i == 0){
          su = false
        }
      }
      su
    }
    var r1 = su(8)
    print(r1)
  }
}