Scala这一路 之 高级语法2-方法与函数

引用:

Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。

Scala 中的方法跟 Java 的类似,方法是组成类的一部分。

Scala 中的函数则是一个完整的对象,Scala 中的函数其实就是继承了 Trait 的类的对象。

Scala 中使用 val 语句可以定义函数,def 语句定义方法。

#方法声明:
#如果你不写等于号和方法主体,那么方法会被隐式声明为抽象(abstract),包含它的类型于是也是一个抽象类型。
def functionName([参数列表]) : [return type]

#方法定义:
#在没有返回类型时 ,Scala采用Unit关键字 作为[return type]
def functionName([参数列表]) : [return type] = {
    function body
    return [expr]
}
  • 示例代码

#示例代码
object testF{
	def testAdd(str1:String,str2:String,num1:Int): String = {
		var retStr = str1 + str2 ;
		if(num1 == 1){
			retStr = retStr + "-test";
		}
		return retStr;
	}
}
  • 示例结果


  • 函数

  • 内嵌函数

#语法
def out(...): Int = {
    def inner(...):Int = {
        ...
    }
    ...
    inner(...)
}

  • 匿名函数

  • #匿名函数:箭头左侧是参数列表,右侧是函数体。特点:匿名函数的使用使代码更加简洁
    #语法
    scala> var func = (i:Int) => i+1
    var func = (i:Int) => i+1
    func: Int => Int = $$Lambda$1150/680232547@4cd6f08b
    
    scala> func(20)
    func(20)
    res9: Int = 21
    
    #等同于
    scala> def funcOther(i:Int)=i+1
    def funcOther(i:Int)=i+1
    funcOther: (i: Int)Int
    
    scala> funcOther(20)
    funcOther(20)
    res10: Int = 21

     

  • ​​​​​​​闭包

    • #简单理解Scala 中的闭包含义就是代码与非局部变量的组合
      #举个例子,下面代码中wx就是一个变量,是一个还没有定义的变量,而x的类型、值在函数res被调用时已经被确定赋值,这种变量为绑定变量
      
      scala> val res = (x:Int)=> x + wx;
      val res = (x:Int)=> x + wx;
      <console>:11: error: not found: value wx
             val res = (x:Int)=> x + wx;
                                     ^
      
      scala> var wx = 10
      var wx = 10
      wx: Int = 10
      
      scala> val res = (x:Int)=> x + wx;
      val res = (x:Int)=> x + wx;
      res: Int => Int = $$Lambda$1103/574187498@4a6a6a69
      
      scala> res(20)
      res(20)
      res1: Int = 30
      

       

END~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值