12函数参数

一. 函数参数的默认值

  1. 定义有默认值的函数

格式:

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

  1. 定义一个函数,并使用不同的参数来测试使用。
Scala 复制代码
def hello(name: String = "小明", age: Int = 17, gender: String = "女"): Unit = {
  println(s"hello,我是${name},${age}岁,性别:${gender}")
}

def main(args: Array[String]): Unit = {
  hello("小花", 25, "女")
  hello("小明", 29, "男")
  hello("小招", 19) // 1. 不写性别,默认为女
  hello() // 2. 不写所有参数,全部使用默认值

  hello(age = 18) // 3.设置年龄为18,其他的参数使用默认值
  hello(gender = "男", name = "小李") // 4. 设置名字为小李,性别为男,年龄使用默认值
}

结果如下:

二. 创建不带()的方法

如果函数没有参数,可以省略定义函数时的( )

格式: def 方法名:返回类型={}。

scala 复制代码
def test: Unit = {
  println("test.......")
}


def main(args: Array[String]): Unit = {

  test  // 不用加()
}

结果如图:

三. 创建接受变参的方法

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

问: 如何定义一个函数,它能接收数量不定的参数,并计算它们的累加?例如:getSum(1) 得到1, getSum(4,1,2,3,5) 得到15?

scala 复制代码
// 允许参数的个数不同,类型相同
// 变参:参数类型后边,加一个*
def getSum(args: Int*): Int = {
  var sum = 0
  for (i <- args) {
    sum += i
  }
  sum
}

def main(args: Array[String]): Unit = {
  val result1 = getSum(1)
  val result2 = getSum(4, 1, 2, 3, 5)
  println(result1, result2)
}

结果如图:

四. 案例

  1. 定义一个函数,判断给定的三个数字是否能构成一个三角形

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

scala 复制代码
//  定义一个函数,判断给定的三个数字是否能构成一个三角形?
def testTriangle(a: Double, b: Double, c: Double): Boolean = {
  a + b > c && a + c > b && b + c > a
}

// 判断一个数是不是素数
def isPrimeNum(num: Int): Boolean = {
  var isPrimeNum = true
  for (i <- 2 to num - 1) {
    if (num % i == 0) {
      isPrimeNum = false
    }
  }
  isPrimeNum
}

def main(args: Array[String]): Unit = {
  val r = testTriangle(1.0, 2.0, 2.0)
  println(r)

  val r1 = isPrimeNum(9)
  println(r1)
}

结果如图:

相关推荐
码爸3 天前
多源异构数据库实时同步至 Doris
数据库·flink·scala
dadaobusi11 天前
学习:chiesel,scala
学习·fpga开发·scala
深兰科技23 天前
深兰科技受邀参与第二届中国(南宁)—东盟人工智能场景应用对接会,深化AI国际合作
人工智能·qt·r语言·scala·symfony·智能机器人·深兰科技
开开心心就好1 个月前
低年级识字练笔顺工具,电脑和安卓端都能用
前端·javascript·网络·安全·scala·erlang·语音识别
开开心心就好1 个月前
清理此电脑网盘图标工具,开源免费好用
网络·网络协议·tcp/ip·智能手机·电脑·scala·erlang
典典分享指南1 个月前
用结构化数据管理产品知识库
scala·bash·batch·actionscript
Thomas21431 个月前
scala 闭包
开发语言·后端·scala
江畔柳前堤1 个月前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Thomas21431 个月前
Java scala 数组 链表
java·链表·scala
江畔柳前堤1 个月前
消息队列:从直觉到精通的完整认知地图
开发语言·人工智能·算法·机器学习·ruby on rails·scala