标签:定义 new package cal bbb scala 参数 递归函数 方法
package com.bjsxt.scala
import java.util.Date
object Lesson_fun {
def main(args: Array[String]): Unit = {
/**
* 1.方法定义
* 1.方法定义使用“def”
* 2.方法可以传参,参数类型不能省略,方法的计算结果类型可以省略,会自动推断。
* 3.方法名和方法体“{...}”要有等号隔开,也可以不写“=”,不写“=”无论方法体最后一行计算结果是什么,都会被丢弃,返回Unit.
* 4.方法体中的返回值可以使用return返回,如果写“return”,方法体的返回类型不能省略。
* 也可以不使用return返回,不写return 方法体默认将最后一行计算的结果返回,建议不写return。
* 5.方法体中如果一行可以搞定,方法体的“{..}”可以省略不写。
*/
// def max(x:Int,y:Int) ={
// if(x>y){
// x
// }else{
// y
// }
// }
// def max(x:Int,y:Int) = if(x>y) x else y
//
// println(max(1,2))
/**
* 2.递归函数
* 递归方法要显式声明方法的返回类型
*
*/
// def fun(num:Int):Int = {
// if(num==1){
// num
// }else{
// num*fun(num-1)
// }
// }
//
// println(fun(5))
/**
* 3.参数有默认值的函数
*/
// def fun(a:Int=100,b:Int=200) = {
// a+b
// }
//
// println(fun(b=3))
/**
* 4.可变长参数的函数
*/
// def fun(s:String*) = {
// s.foreach((str:String)=>{
// println(str)
// })
// }
// def fun(ss:String*) = {
// ss.foreach(println)
// }
//
// fun("abc","hello","world","yyy")
/**
* 5.匿名函数
*/
// val f = ()=>{
// println("hello world~")
// }
// val f = (a:Int,b:Int)=>{
// a+b
// }
// println(f(100,200))
/**
* 6.偏应用函数
*/
// def showLog(date:Date,log:String) = {
// println("date is "+date +" ,log is "+log)
// }
// val date = new Date()
// showLog(date,"a")
// showLog(date,"b")
// showLog(date,"c")
//
// val fun = showLog(date,_:String)
// fun("aaa")
// fun("bbb")
// fun("ccc")
/**
* 7.嵌套函数
*/
// def fun(i:Int)={
//
// def fun1(a:Int):Int={
// if(a==1){
// 1
// }else{
// a*fun1(a-1)
// }
// }
//
// fun1(i)
//
// }
//
// println(fun(5))
/**
* 8.高阶函数
* 函数的参数是函数
* 函数的返回是函数
* 函数的参数和返回都是函数
*/
//函数的参数是函数
// def fun1(f:(Int,Int)=>Int,c:String) = {
// val result = f(100,200)
// result+"~"+c
// }
// val end = fun1((a:Int,b:Int)=>{
// a*b
// },"hello")
//
// println(end)
//函数的返回是函数 -----要显示的声明函数的返回类型
// def fun(a:Int,b:Int) :(Int,Int)=>Int= {
// val result = a+b
// def fun1(i:Int,j:Int):Int={
// i*j+result
// }
// fun1
// }
//
// println(fun(1,2)(100,200))
// 函数的参数和返回都是函数
// def fun(f:(Int,Int)=>Int,a:Int):(String,String)=>String ={
// val result = f(1,2)+a
// def fun1(s1:String,s2:String):String = {
// s1+"@"+s2+"$"+result
// }
// fun1
// }
//
// println(fun((a:Int,b:Int)=>{a*b},100)("hello","world"))//hello@world$102
/**
* 9.柯里化函数
* 高阶函数简化版
*/
// def fun(a:Int,b:Int)(c:Int,d:Int) = {
// a+b+c+d
// }
//
// println(fun(1,2)(3,4))
}
}
标签:定义 new package cal bbb scala 参数 递归函数 方法
原文地址:https://www.cnblogs.com/huiandong/p/9278287.html