引用:
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~