Tableau de chaînes de solidité
J'ai rencontré un problème commun qui il semble que je ne peux pas résoudre d'une manière élégante et efficace dans la solidité.
J'ai passer l'arbitraire d'un tableau de l'arbitraire de longues chaînes pour une solidité contrat.
Dans mon esprit, il doit être quelque chose comme
function setStrings(string [] row)
mais il semble qu'il ne peut pas être fait.
Comment puis-je résoudre ce problème?
OriginalL'auteur Fabio | 2017-03-10
Vous devez vous connecter pour publier un commentaire.
C'est une limitation de la Solidité, et la raison en est que
string
est essentiellement une longueur arbitraire tableau d'octets (c'est à direbyte[]
), et ainsi destring[]
est un deux dimensions du tableau d'octets (c'est à direbyte[][]
). Selon La solidité des références, les tableaux à deux dimensions en tant que paramètres ne sont pas encore pris en charge.Un moyen de résoudre ce problème si vous savez à l'avancée de la longueur maximum de l'ensemble de vos chaînes (qui dans la plupart des cas sont possibles), alors vous pouvez faire ceci:
function setStrings(byte[MAX_LENGTH][] row) {...}
OriginalL'auteur Dat Nguyen
Chaîne tableaux comme paramètres ne sont pas encore pris en charge dans la solidité.
OriginalL'auteur AppsAndGo
Vous pouvez convertir les éléments d'un tableau à une chaîne d'octets, puis désérialiser que les octets de la chaîne de retour à la matrice à l'intérieur de la fonction. Même si cela peut s'avérer être assez cher, vous pouvez l'essayer si vous n'avez pas le choix. Vous pouvez suivre cette court article pour sérialiser/désérialiser tout type de données dans la solidité.
OriginalL'auteur Vaibhav Saini
tableau de chaîne n'est pas disponible dans la Solidité
parce que la Chaîne est fondamentalement tableau de caractères
Imbriqués les tableaux dynamiques sont pas mis en œuvre
OriginalL'auteur Nguyen Nguyen