[阿强的自学之路]----Scala学习笔记 Day05:函数与函数基础

何为函数?

为了完成某一个功能的程序语句的集合,称之为函数。函数可以在任何位置,甚至可以在函数中定义函数。

 

何为方法?

在类中的函数称之为方法。

 

Scala定义函数:

两种方式:

1、用def定义

def add(): Int ={
    return x*y*z
  }

2、用val定义

val f = (x:Int) => x+3

Scala函数的特点:

(1)函数不可以重载或重写。

(2)Scala可以在任意的语法结构中声明任何语法。

(3)Scala中的函数可以嵌套定义。

 

Scala函数参数:

(1)可变参数

def f1(str:String*) : Unit = {
    println(str)
  }

在参数后加上“*”,则表示参数的长度不固定。

    r1.f1("bob","tom","jerry")
    r1.f1("abc")

运行结果:

ArraySeq(bob, tom, jerry)
ArraySeq(abc)

(2)参数默认值

def f2(name : String = "NAME",age : Int): Unit ={
    println(s"我的名字是${name},我今年${age}")
  }

(3)带名参数

r1.f2(age = 23)

结果为:

我的名字是NAME,我今年23

函数至简原则

(1)return 可以省略,Scala 会使用函数体的最后一行代码作为返回值;
(2)如果函数体只有一行代码,可以省略花括号;
(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略);
(4)如果有  return,则不能省略返回值类型,必须指定;
(5)如果函数明确声明 unit,那么即使函数体中使用  return 关键字也不起作用;
(6)Scala 如果期望是无返回值类型,可以省略等号;
(7)如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加;
(8)如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略;
(9)如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略;

匿名函数

匿名函数即没有函数名的函数。

(x:Int) => {函数体}

匿名函数的作用:

(1)可以当作参数输入:

    val fun = (name : String) => {println(name)}
    fun("123")
    def f(func:String => Unit): Unit ={
      func("A_Q")
    }
    f(fun)
    f((name:String) => {println(name)})
  

这样做的好处是在数据不变的基础上,可以调用不同的方法来对数据进行处理。

匿名函数的简化原则:

(1)参数的类型可以省略,会根据形参进行自动的推导

(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过 1 的永远不能省略圆括号。

(3)匿名函数如果只有一行,则大括号也可以省略

(4)如果参数只出现一次,则参数省略且后面参数可以用_代替

f(println(_))

(5)如果知道当前传入的是一个函数体而不是引用,则_可以省略

f(println)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值