Scala语言学习-06-传名参数、传值参数、传函数参数的区别

本文通过一个Scala程序实例,详细解析了传值参数、传名参数和传函数参数的区别。在传名参数中,函数体被完整带入,导致多次调用;而传值参数仅传递结果,调用一次;传函数参数虽然效果类似传名参数,但在使用上更灵活,但需要提供额外的参数。
摘要由CSDN通过智能技术生成

一、测试环境

名称版本
操作系统win10
CPU12th Gen Intel® Core™ i7-12700H
内存16G
JDK1.8.0_171
Scala3.1.2

二、代码

object TestParameterPassing {
    def main(args: Array[String]): Unit = {
        ValPmtPassing(ExampleFuc(100))
        NamePmtPassing(ExampleFuc(100))
        FuncPmtPassing(ExampleFuc,100)
    }
    
    def ExampleFuc(Num: Int): Int = {
        println("调用一次例子函数")
        Num
    }
    
    //传值参数测试函数
    def ValPmtPassing(Num: Int): Unit = {
        printf("传值参数函数测试:%d\n",Num)
        printf("传值参数函数测试:%d\n",Num)
        println("+++++++++++++++++++++")
    }
    
    //传名参数测试函数
    def NamePmtPassing(Func: => Int): Unit = {
        printf("传名参数函数测试:%d\n",Func)
        printf("传名参数函数测试:%d\n",Func)
        println("+++++++++++++++++++++")
    }
    
    //传函数参数测试函数
    def FuncPmtPassing(Func: Int => Int, Num: Int): Unit = {
        printf("传函数参数函数测试:%d\n",Func(Num))
        printf("传函数参数函数测试:%d\n",Func(Num))
        println("+++++++++++++++++++++")
    }
    
}

三、运行结果

调用一次例子函数
传值参数函数测试:100
传值参数函数测试:100
+++++++++++++++++++++
调用一次例子函数
传名参数函数测试:100
调用一次例子函数
传名参数函数测试:100
+++++++++++++++++++++
调用一次例子函数
传函数参数函数测试:100
调用一次例子函数
传函数参数函数测试:100
+++++++++++++++++++++

四、个人理解

1、传名参数:
传名参数会把传入函数的函数体整个带入,我们在函数ValPmtPassing中调用两次,所以他也会完整调用两次ExampleFuc,输出两次:调用一次例子函数。

2、传值参数:
传值参数只会在开始时调用一次ExampleFuc,再把传入函数的返回值带入,所以只输出一次:调用一次例子函数。

3、传函数参数:
实现的效果上和传名参数一样,但使用上稍有区别,传名参数只需要一个传入参数,就把方法名和方法需要的参数一并传入,而传函数参数需要传多个,除了函数名还有参数,便捷性上传名参数好很多。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值