【问题标题】:How to pass dynamic amount of arguments in function如何在函数中传递动态数量的参数
【发布时间】:2018-10-26 14:17:11
【问题描述】:

我尝试在不同的情况下传递不同数量的参数。 我有下一个代码:

function getByteCode(tokenData, incomeData){

        incomeData.volume = Number(incomeData.volume) * Math.pow(10,tokenData.decimals);
        incomeData.volume = incomeData.volume.noExponents();
        let web3 = new Web3();
        let instanceContract = new web3.eth.Contract(abi);
        instanceContract.options.address = tokenData.address;
        let necessaryMethod = instanceContract.methods[incomeData.methodCall];
        let methodCall = necessaryMethod(incomeData.destination_address, incomeData.volume);
        return methodCall.encodeABI();
    } catch (err) {
        sails.log(err);
        return {
            state: 'fail',
            message: 'There is error in creation byte code \n' + err
        }
    } 
}

necessaryMethod 中,我想在一种情况下传递两个参数,在另一种情况下传递三个或更多参数。我该怎么做?也许我应该使用“arguments”,但我不明白怎么做?

【问题讨论】:

  • 你可以将参数放在一个数组中,然后使用.apply()
  • 从代码中不清楚这些“一种情况”和“另一种情况”是什么。
  • @Pointy 不需要使用 .apply,展开操作符会实现同样的效果,并且更清晰。必要方法(...数组)
  • @sofcal 我是老派 :) 另外... 不是操作员。

标签: javascript node.js function arguments sails.js


【解决方案1】:

好的,请您帮忙。我使用了方法 .apply()

let web3 = new Web3();
let instanceContract = new web3.eth.Contract(abi);
instanceContract.options.address = tokenData.address;
let necessaryMethod = instanceContract.methods[incomeData.methodCall];

let methodCall = necessaryMethod.apply(this, incomeData.argumentsForFunction); 

return methodCall.encodeABI();

在第一种情况下,我调用了函数 getByteCode(firstObj,incomeData),在incomeData.argumentsForFunction = ['0x323.....', '1500000000'] 中有下一个数组。

在其他情况下,我使用incomeData.argumentsForFunction = ['0x323.....', '0x3228....', '54454000000'] 调用函数 getByteCode(firstObj,incomeData) /p>

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2012-02-13
    • 2020-04-02
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多