00:00
我们已经了解了函数的高阶用法,首先函数可以作为值进行传递,那接下来呢,我们再来看二种用法,那就是函数可以作为函数的参数进行传递,那这种用法我们之前在能解拉姆达表达式的时候也已经比较熟悉了,我们可以定义一个函数,它呢接收另外一个函数作为参数。那接收的这个参数就相当于是一个操作嘛,所以我们是把数据已经定义死,然后再把操作传进来,可以给不同的个操作,诶我定义一和二到底是要相加还是相减,这样就可以得到不同的结果了啊,这是比较常见的啊,函数作为参数进行传递的一种应用场景,那大家可能会想到这个具体的这个数啊,一和二一定要定义死吗?其实也未必啊,所以接下来我们再定义一个不定义死数据的,就是把数据和操作全部作为参数传进来的一个函数,实际上我们还是定义一个二元计算函数,我们这个就叫做呃,UE吧。
01:13
Evaluate,我们要做一个计算,首先呢,我们定一个操作,那大家知道二元数去做计算,假如两个数都是int类型的话,那应该有两个参数不是int,然后得到的这个类型得到的返回值类型呢,也是一个int点乘除,我们最后都得到int,以当前的操作是一个函数,这个函数两个int类型的参数,得到一个int类型的返回值,就是这样的一个写法,这就是函数类型,那除了它之外呢,我们还需要定义传入的数据到底是什么啊,因为现在不想直接写死吗?这个也很简单,后面再加上两个参数不就完了吗?A和B都是特练习,最终我们得到的,那就应该是盗用这个操作。
02:02
A和B经过计算之后得到的一个结果,得到结果当然就是int类型了,哎,所以返回值还是int。函数题非常的简单,那就是op直接调A入AB就可以了。啊,然后跟之前的这个拉姆达表达式测试的时候的这个相比,就是我们没有把一和二直接写死在这里面,之前我们所有的操作传进来之后都只能针对一和二做计算,现在的话就相当于A和B,我们也可以自己定义了,也可以传进去了,好,那然后呢,呃,接下来我们要传一个函数进来,之前我们已经知道了啊,可以传一个拉姆达表达式进来,那现在呢,我们要传一个一般化的函数,其实这个之前拉姆达表达式如果说我们把它又付给了另外一个变量的话,那大家知道。相当于我们这个匿名函数不就有名字了吗?就叫ADD嘛,所以接下来我们如果要定义一个一般的函数的话,也是一样的,比方说我就定义一个函数,那这个写法当然还是两个int类型的加数,返回一个int类型体实现,不然就是返回A加B,我把这个A的函数一好,那接下来是不是直接传进来就可以了,所以接下来我丢evil可以传A,然后比方说相加,哎,我们加这个12和35。
03:26
那这就是得到最后的结果啊,那当然我们可以来放在这个print line里边,直接做一个打印输出啊,这是完全可以做到的啊。我们看一下得到结果是什么,没有问题,得到47啊,这就是把函数啊,一个普通的函数作为参数进行传递的一个过程,当然了这个地方大家也可以写成域名函数,接使用匿名函数也是可以的,比方说这里边我们直接写这个ABA加B,这是一个匿名函数啊,然后后边我们给这个12 25,那这样的写法肯定也是完全没有问题的。
04:08
甚至我们还可以直接根据之前的简化写法,直接写成大划线加大画线,作为当前的第一个操作这个函数,然后边是12 35,这些写法都是完全正确的,最后得到的结果当然也是一样的啊,都是相加之后的结果,47。这是第二种用法,将函数作为函数的参数进行传递。
我来说两句