Go-Ethereum

Solidity 函式的返回值數量是否有限制?

  • July 9, 2018

這個問題的答案(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

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