scala中变量和函数一视同仁,都是平等地位。
变量可以等于函数,函数也可以等于变量。
scala> //----------def--------------
scala> def f2=println
f2: Unit
scala> def f2=println _
f2: () => Unit
scala> var f2=println
f2: Unit = ()
scala> var f2=println _
f2: () => Unit = <function0>
scala> def f3(p1:String,p2:Int=30)=p1+p2 --参数带默认值的情况
f3: (p1: String, p2: Int)String
scala> f3("Spark")
res4: String = Spark30
scala> f3(p2=100,p1="Scala") --参数顺序可变
res5: String = Scala100
--参数个数不确定的函数
scala> def sum(numbers:Int*) = {var result=0; for(i<-numbers){result+=i}; result} --这里默认返回代码块的最后一行result的值
sum: (numbers: Int*)Int
scala> sum(1,2,3)
res6: Int = 6
scala> sum(1,2,3,4,5,6)
res7: Int = 21
scala> sum(1 to 100) --1 to 100是一个range集合,定义的参数是Int,所以报错
<console>:9: error: type mismatch;
found : scala.collection.immutable.Range.Inclusive
required: Int
sum(1 to 100)
^
scala> sum(1 to 100: _*) --非常重要,将每个元素提取出来: _*,冒号和下划线中间有空格
res9: Int = 5050
-----------------------------------------------------
//无参数的函数
def doWhile(){
var line=""
do{
line=readLine()
print("input:"+line);
}while(line!="")
}
//有参数的函数
def looper(x:Long,y:Long):Long = {
var a=x
var b=y
while(a!=0){
var tmp=a
a=b%a
b=tmp
}
b
}
scala 函数
最新推荐文章于 2021-07-07 11:16:20 发布