Solidity
沒有定義返回值的函式的返回值是多少?
程式碼取自這個智能合約
/// @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 。