Go-Ethereum
Solidity 函式的返回值數量是否有限制?
這個問題的答案(https://ethereum.stackexchange.com/a/3590/4575)說:“我還不允許從 Solidity 函式返回動態數組。”
另一方面,Solidity 支持具有多個返回值的函式。如何從合約函式返回多個字元串?
$$ Q $$一個函式呼叫中的返回值數量是否有任何限制。例如,我可以在一個函式呼叫中返回 N(例如 N=1000)個值甚至更多嗎?
function getData() constant returns (bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, ...) { bytes32 a = "a"; bytes32 b = "b"; bytes32 c = "c"; bytes32 d = "d"; bytes32 e = "e"; bytes32 f = "f"; bytes32 g = "g"; return (a, b, c, d, e, f, g, ...); }
感謝您寶貴的時間和幫助。
實際上,呼叫堆棧在目前實現中施加了限制。
以下合約將面臨“堆棧太深”編譯器錯誤。
pragma solidity ^0.4.3; contract Test { function getData() constant returns (bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32, bytes32) { return ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o"); } }
瀏覽器可靠性:
https://ethereum.github.io/browser-solidity/#gist=ac9812a045a41fd4168f2e352732962d
要點網址:
https://gist.github.com/anonymous/ac9812a045a41fd4168f2e352732962d