Contract-Development
傳遞固定大小的 bytes32 數組兩份合約之間
我正在使用兩個契約,其中一個呼叫另一個函式:
contract con1 { bytes32[5] data; function con1(){ } function addData(bytes32[5] a) { //fills the array } function getData() public constant returns(bytes32[5]){ //retrieve array return (data); } }
getData
下一個合約在使用填充後從上述合約呼叫addData
:contract con2 { function con2(){ } function try(address con1Contract){ con1 b = con1(con1Contract); bytes32[5] y = b.getData(); } .... }
因為在 Solidity 中我們不能傳遞動態大小的數組,所以我固定了數組的大小。但是,我仍然收到以下錯誤:
TypeError: Type bytes32[5] memory is not implicitly convertible to expected type bytes32[5] storage pointer. bytes32[5] y = b.getData();
我究竟做錯了什麼?
另外,有沒有更有效的方法來做到這一點?
嘗試使契約的“y”數組屬性
contract con1 { bytes32[5] data; function con1(){ } function addData(bytes32[5] a) { //fills the array } function getData() public constant returns(bytes32[5]){ //retrieve array return (data); } } contract con2 { bytes32[5] y; function con2(){ } function trys(address con1Contract){ con1 b = con1(con1Contract); y = b.getData(); } }
這個對我有用。