PHP函数柯里化代码示例

代码示例

<?php

/**
 * 示例函数
 */
function add( $a, $b )
{
    return $a + $b;
}

/**
 * 创建柯里化的函数
 */
function curry( $fn )
{
    // 把第2个及以后的参数截出来
    $args = func_get_args();
    $outerArgs = array_slice( $args, 1 );

    // 匿名函数
    $retFn = function () use ( $fn, $outerArgs )
    {
        // 把上面截出来的函数和本次匿名函数传进来的合并
        $args = array_merge( $outerArgs, func_get_args());
        // 调用
        return call_user_func_array( $fn, $args );
    };

    return $retFn;
}

$fn = curry( 'add', 5 );

var_dump( $fn( 3 )); // = 8

$fn2 = curry( 'add', 10 );
var_dump( $fn2( 3 )); // = 13


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值