GetAll – UnimplementedFeatureError: tableaux dynamiques imbriqués non implémentés ici

Soli

GetAll – UnimplementedFeatureError: tableaux dynamiques imbriqués non implémentés ici


Je crée le contrat suivant:

 pragma solidity ^   0.4 . 17 ; contract TodoList   { 

     event   NewTodo ( uint  todoId ,   string  value ); 
     event   DeleteTodo ( uint  todoId ,   string  value ); mapping ( uint   =>  address )   public  todoOwner ; mapping ( address =>   uint )  ownerTodoCount ; 

     TodoItem []   public  todoItems ; 

     struct   TodoItem   { 
         string  value ; 
         //TODO submit ether to a TodoItem 
         bool  active ; 
     } 

     function  createTodo ( string  _value )   internal  returns ( uint )   { 
         uint  id =  todoItems . push ( TodoItem ( _value ,   true ))   -   1 ; todoOwner [ id ]   =  msg . sender ; ownerTodoCount [ msg . sender ]++; 
         NewTodo ( id ,  _value ); 
         return  id ; 
     } 

     function  getAllTodos ()  constant returns ( string [],   bool [])   { 
         uint  length =  todoItems . length ; 

         string []  memory values =   new   string []( length ); 
         bool []  memory actives =   new   bool []( length ); 

         for   ( uint  i =   0 ;  i <  length ;  i ++)   { values [ i ]   =  todoItems [ i ]. value ; actives [ i ]   =  todoItems [ i ]. active ; 
         } 

         return   ( values ,  actives ); 
     }   
 } 

Je voudrais afficher tous les todos d’un utilisateur. Pour cela, j’ai créé la fonction getAllTodos .

Cependant, lors de la truffle compile j’obtiens l’erreur suivante:

UnimplementedFeatureError: tableaux dynamiques imbriqués non implémentés ici.

Des suggestions pour accéder à tous les todos?

Réponses


 Rahul Kothari

Les tableaux imbriqués dynamiques ne sont donc pas parfaitement gérés par la solidité à l’heure actuelle. Chaque fois que vous accédez à une fonction impliquant un tableau imbriqué, elle doit être interne. Ainsi, je suppose que l’erreur pourrait être dans la function getAllTodos dont la portée d’accès n’est pas spécifiée, donc par défaut public.

J’espère que ça marche! (PS- J’ai entendu dire que cela pourrait également échouer car les tableaux imbriqués ne sont pas encore entièrement implémentés, mais valent bien la peine d’être essayés

Soli

Merci pour votre réponse! Seriez-vous si gentil d’ajouter un exemple de code, comment le faire mieux? Je suppose que cela pourrait être très pertinent pour les futurs chercheurs de «réponses».

Rahul Kothari

Je pense donc que le code pourrait fonctionner si vous avez la définition de fonction suivante: function getAllTodos() internal returns(string[], bool[])

 

-, dynamiques, GetAll, ici?, imbriqués?, implémentés, non, tableaux, UnimplementedFeatureError:

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *