Function Solidity中的一个函数可以调用合同中的另一个函数吗?

Function Solidity中的一个函数可以调用合同中的另一个函数吗?,function,ethereum,solidity,contract,Function,Ethereum,Solidity,Contract,我对编程一无所知,我正在尝试编写一个智能合约,它可以接收资金并通过一个函数将资金转移到其他地址。 在我的代码中,我有一个修饰符,它定义了一个可以调用提取/传递函数的所有者。我定义了3个地址变量,函数将ETH传输到其中。幸运的是,它能按我所希望的那样工作 pragma solidity ^0.7.0; contract SubscriptionPayment { // address variable defining the owner address public owner = msg

我对编程一无所知,我正在尝试编写一个智能合约,它可以接收资金并通过一个函数将资金转移到其他地址。 在我的代码中,我有一个修饰符,它定义了一个可以调用提取/传递函数的所有者。我定义了3个地址变量,函数将ETH传输到其中。幸运的是,它能按我所希望的那样工作

pragma solidity ^0.7.0;

contract SubscriptionPayment {

// address variable defining the owner 
address public owner = msg.sender
;

// modifier that restricts access to the owner of contract
modifier onlyOwner{
    require(msg.sender == owner);
_;
}
// contract is able to handle ETH
receive() external payable{
}

// function to withdraw restricted to owner 
function withdraw(uint _value) external onlyOwner {
    msg.sender.transfer(_value)
;
}

// define address variables 
address payable public account1Address = 0xF6D461F87BBce30C9D03Ff7a8602156f006E2367 ;
address payable public account2Address = 0xb6a76127EDf7E0B7dfcEd9aDE73Fa8780eC26592 ;
address payable public account3Address = 0x722b95CA56b1C884f574BAE4832f053197Ca3F58 ;

// function to pay all subscriptions
function paySubscriptions() external onlyOwner {
    account1Address.transfer(1000000000000000000);
    account2Address.transfer(1000000000000000000);
    account3Address.transfer(2000000000000000000);
}
我的问题是关于付费订阅功能。有没有办法单独和顺序地执行到这3个地址的传输?当然,我可以创建3个单独的函数来将ETH传输到每个地址,但这将给我3个单独的函数来调用。 是否可以编写代码,当调用一个函数时,从合同中调用另一个函数,当调用此函数时,从合同中调用另一个函数?如果是这样,我可以编写一个可以在外部调用的函数1,在调用/执行函数1后,从合同中调用其他两个函数


如果这是一个愚蠢的问题,我很抱歉,但我是一个完全的初学者,并提前感谢您的帮助:)

为了更好地理解您的任务,请写下如果智能合约可以用Java或其他语言编写,您将如何实现它

定义地址数组及其需要传输的数量:

mapping (address => uint) public balances;
address payable [] public subscribers;
然后循环该映射,为每个映射付款,例如:

 function paySubscribers() public{
       for (uint i=0; i<subscribers.length; i++) {
          address payable currAddress = subscribers[i];
          currAddress.transfer(balances[currAddress]);
      }
    
    }
函数paysubers()public{
对于(uint i=0;很抱歉,我没有任何类型的编程能力。