1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| // SPDX-License-Identifier: MIT pragma solidity ^0.8.17;
contract Function { // Functions can return multiple values. function returnMany() public pure returns (uint, bool, uint) { return (1, true, 2); }
// Return values can be named. function named() public pure returns (uint x, bool b, uint y) { return (1, true, 2); }
// Return values can be assigned to their name. // In this case the return statement can be omitted. function assigned() public pure returns (uint x, bool b, uint y) { x = 1; b = true; y = 2; }
// Use destructuring assignment when calling another // function that returns multiple values. function destructuringAssignments() public pure returns (uint, bool, uint, uint, uint) { (uint i, bool b, uint j) = returnMany();
// Values can be left out. (uint x, , uint y) = (4, 5, 6);
return (i, b, j, x, y); }
// Cannot use map for either input or output
// Can use array for input function arrayInput(uint[] memory _arr) public {}
// Can use array for output uint[] public arr;
function arrayOutput() public view returns (uint[] memory) { return arr; } }
// Call function with key-value inputs contract XYZ { function someFuncWithManyInputs( uint x, uint y, uint z, address a, bool b, string memory c ) public pure returns (uint) {}
function callFunc() external pure returns (uint) { return someFuncWithManyInputs(1, 2, 3, address(0), true, "c"); }
function callFuncWithKeyValue() external pure returns (uint) { return someFuncWithManyInputs({a: address(0), b: true, c: "c", x: 1, y: 2, z: 3}); } }
|