函数重载
函数重载:常用于同一函数根据参数类型及个数调用不同的实现
常见一个函数,根据传入不同数量的参数及不同的参数类型调用不同的函数实现。
const getUsers = functionUtil.createOverload({ useFirst: true, // 为 true 时意味着,如果有多次相同的重载实现,则使用第一次的重载实现函数,否则,使用最后一次定义的重载实现函数});getUsers.addImpl(function () { console.log('查询所有用户'); }); getUsers.addImpl(function () { console.log('xxxx 查询所有用户'); }); const searchPage = function (page, pageSize = 10) { console.log('按照【页码】和【数量】查询用户'); } getUsers.addImpl('number', searchPage); getUsers.addImpl('number', 'number', searchPage); getUsers.addImpl('string', function () { console.log('按照【姓名】查询用户'); }); getUsers.addImpl('string', 'string', function () { console.log('按照【性别】查询用户'); });调用:getUsers(); // 查询所有用户getUsers(1); // 按照【页码】和【数量】查询用户getUsers(1, 20); // 按照【页码】和【数量】查询用户getUsers('a'); // 按照【姓名】查询用户getUsers('a', 'b'); // 按照【性别】查询用户 复制
const getUsers = functionUtil.createOverload({ useFirst: true, // 为 true 时意味着,如果有多次相同的重载实现,则使用第一次的重载实现函数,否则,使用最后一次定义的重载实现函数});getUsers.addImpl(function () { console.log('查询所有用户'); }); getUsers.addImpl(function () { console.log('xxxx 查询所有用户'); }); const searchPage = function (page, pageSize = 10) { console.log('按照【页码】和【数量】查询用户'); } getUsers.addImpl('number', searchPage); getUsers.addImpl('number', 'number', searchPage); getUsers.addImpl('string', function () { console.log('按照【姓名】查询用户'); }); getUsers.addImpl('string', 'string', function () { console.log('按照【性别】查询用户'); });调用:getUsers(); // 查询所有用户getUsers(1); // 按照【页码】和【数量】查询用户getUsers(1, 20); // 按照【页码】和【数量】查询用户getUsers('a'); // 按照【姓名】查询用户getUsers('a', 'b'); // 按照【性别】查询用户
可选
选项,useFirst:true 为 true 时意味着,如果有多次相同的重载实现,则使用第一次的重载实现函数
function
函数重载
Remarks
函数重载:常用于同一函数根据参数类型及个数调用不同的实现
示例
常见一个函数,根据传入不同数量的参数及不同的参数类型调用不同的函数实现。