Spark-Scala语言实战(3)

我们先从简单的无参函数开始,我只需要我的函数给我输出一个"Hello, World!",该怎么操作呢?接着往下看。

def greet(): Unit = {
  println("Hello, World!")
}

greet() // 调用函数,输出 "Hello, World!"

这样,我们就定义了一个名为greet的函数,它的内容很简单,就是输出我们所需的"Hello, World!",来看看效果吧。

2.带参函数

在带参函数中,其实和无参的区别不大,但是要注意我们的调用方法。

def add(a: Int, b: Int): Int = {  
  a + b  
}  
  
val sum = add(3, 4) // 调用函数,并将结果赋值给变量sum  
println(sum) // 输出 7

我们首先定义了一个add函数,再把它作完相加的值赋给sum,然后输出sum,来看看效果吧。

3.匿名函数

在Scala中,匿名函数是一种没有名称的函数,它们常常作为参数传递给其他函数,或者在某些情况下直接用于表达简单的逻辑。Scala的匿名函数是通过=>符号来定义的,它左侧是参数列表,右侧是函数体。

来个简单的匿名函数看看

val add = (a: Int, b: Int) => a + b  
val sum = add(3, 4) // 调用匿名函数,并将结果赋值给变量sum  
println(sum) // 输出 7

可能单单一个大家看不出来区别,再来个难的

匿名函数作为返回值

def createMultiplier(factor: Int): Int => Int = {  
  (num: Int) => num * factor // 返回匿名函数  
}  
  
val triple = createMultiplier(3) // 创建一个函数,该函数将输入的数字乘以3  
val result = triple(5) // 调用返回的函数,并将结果赋值给变量result  
println(result) // 输出 15

这样就很直观吧,多做对比。

三、任务实现

用Scala写一个电话号码归属地以输入的号码前几位的字段来区分,在输入号码后告知是联通移动电信还是错误的号码,号码字段用数组来存贮。

object p2 {
  // 假设电话号码的前三位或四位代表不同的运营商
  // 这里使用数组来存储号码字段和对应的运营商
  val phonePrefixes = Array(
    ("130", "131", "132", "155", "156", "185", "186", "1709") -> "联通",
    ("134", "135", "136", "137", "138", "139", "150", "151", "152", "157", "158", "159", "182", "183", "184", "187", "188", "198", "1705", "1340") -> "移动",
    ("133", "153", "180", "181", "189", "1700") -> "电信"
  )

  // 函数来根据号码前缀判断运营商
  def classifyPhoneNumber(phoneNumber: String): String = {
    // 提取号码的前几位作为前缀
    val prefix = phoneNumber.take(4) // 假设前四位是足够的
    // 查找前缀对应的运营商
    phonePrefixes.find(_._1.contains(prefix)).map(_._2).getOrElse("错误的号码")
  }

  // 程序的入口点
  def main(args: Array[String]): Unit = {
    val phoneNumber = "13800138000" // 示例号码,请替换为实际输入的号码
    val operator = classifyPhoneNumber(phoneNumber)
    println(s"号码 $phoneNumber 的归属运营商是: $operator")
  }

}

我在 find 方法中使用了一个匿名函数 prefixSet => prefixSet._1.contains(prefix) 这样做是为了提高代码的可读性,并且使类型推断更加明确。

现在,编译并运行这个代码,它应该可以正确地根据电话号码前缀判断归属运营商了。

拓展-scala自定函数的种类作用

函数种类描述作用

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值