Scala函数定义及使用

1、Java Lambda表达式

函数式接口

一种只含有一个抽象方法声明的接口
可以使用匿名内部类来实例化函数式接口的对象
通过Lambda表达式可以进一步简化代码

Lambda语法

(parameters) -> expression
(parameters) ->{ statements; }

示例

需求:学历年龄与薪资水平匹配

//声明一个接口
public interface SalarylevelIterface {
   
    public  Integer operation(Integer a, String content);
}
public class TestSalaryLevel {
   
    public static void main(String[] args) {
   
        SalarylevelIterface salarylevel=(Integer a, String content)->{
   
            if(content.equals("初中") && a>=18 && a<20){
   
                return 2000;
            }else if(content.equals("高中") && a>=20 && a<22){
   
                return 2200;
            }else if(content.equals("大专") && a>=22 && a<24){
   
                return 2400;
            }else if(content.equals("本科") && a>=24){
   
                return 3000;
            }else {
   
                return 0;
            }
        };
        System.out.println(salarylevel.operation(18, "初中"));
    }
}

2、Scala方法和函数

2.1函数定义

//函数的定义
def 函数名([参数列表]):[返回值类型]={
   
    函数体
    [return] 表达式
}
//函数调用
函数名(参数列表)

示例:函数的定义和使用

需求:传入两个参数,取较小的值

//函数的定义
def minValue(a:Int,b:Int): Int = if(a>b) b else a
//调用函数
println(minValue(10, 20))

需求:传入三个参数,进行相应计算

//函数的定义
def addValue(a:Int,b :Int, c:String):Int ={
   
      if(c.equals("+")){
   
        return a+b
      }else if(c.equals("-")){
   
        return a-b
      }else if(c.equals("*")){
   
        return a*b
      }else {
   
        return 0
      }
    }
//调用函数
println(addValue(20, 10, "+"))

需求:实现阶乘

//递归调用
def ji(n:Double):Double =if(n==2) 2 else n*ji(n-1)
println(ji(6))

2.2匿名函数定义

(参数列表)=>{函数体}

“=>”左边为参数列表
“=>”右边为函数体

//定义匿名函数
val aa=(a:Int,b:Int)=> a+b  //用aa来接收匿名函数
//如果书写完整,完整格式如下
val aa:(Int,Int)=>Int=(a:Int,b:Int)=>{
   a+b}
//调用匿名函数
println(aa(3,4))

2.3参数传递

2.3.1传值调用

传值调用时,参数只在调用时计算一次,后续重复使用计算的结果

def square(x: Int): Int = {
    
    println(x)    //3
    x * x             //计算3*3
}
square(1+2)   //先计算1+2

2.3.2传名调用

传名调用时,参数在调用时不会计算,只有真正用到参数时才计算

def square(x: => Int): Int = {
    
    println(x)    //计算1+2
    x * x             //计算(1+2)*(1+2)
}
square(1+2)   //调用时不计算

2.3.3参数长度不定

def showMsg2(name
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值