Solidity

沒有定義返回值的函式的返回值是多少?

  • November 22, 2022

程式碼取自這個智能合約

       /// @notice Only the central admin should be able to store his life memory in bytes32.
function store_me_on_chain(bytes32 _data) public returns (string memory) {
   require(msg.sender == admin, 'Not admin');
   data_store = _data;
   data_set = asmbl();
   ds_to_Str = Strings.toString(data_set);
   return data = string("den_who_is_dan_");
}

/// @notice Generate number
function asmbl() public view returns (uint8 b) {
   assembly {
       let c := add(27, 16)
       mstore(0x80, c)
       { let d := add(sload(c), 255) b := d }
       b := add(b, c) }
   }

asmbl 在沒有返回的情況下被聲明。但是 asmbl() 是針對 data_set 的。data_set 的值是多少?

數據集 = b

當您在返回範圍內定義變數時 - function asmbl() public view returns (uint8 b),它返回變數b。所以你不需要顯式地寫,只要給breturn設置一些值,這個值就會被返回。

當您定義函式function store_me_on_chain(bytes32 _data) public returns (string memory)而不在返回範圍內初始化任何變數時,這意味著您必須顯式編寫 return 。

引用自:https://ethereum.stackexchange.com/questions/139833