Contract-Development

傳遞固定大小的 bytes32 數組兩份合約之間

  • April 2, 2018

我正在使用兩個契約,其中一個呼叫另一個函式:

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();
   }
}

這個對我有用。

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