Ethereum 坚固的字符串数组

Ethereum 坚固的字符串数组,ethereum,solidity,eris-blockchain,Ethereum,Solidity,Eris Blockchain,我遇到了一个相当普遍的问题,似乎我不能优雅而有效地解决 我必须将任意长字符串的任意长数组传递给solidity契约 在我看来应该是这样的 function setStrings(string [] row) 但这似乎是做不到的 如何解决这个问题?这是一个坚固性的限制,原因是字符串基本上是一个任意长度的字节数组(即字节[]),因此字符串[]是一个二维字节数组(即字节[])。根据,二维数组作为参数还不受支持 合约函数可以接受二维数组吗? 这还没有为外部调用和动态数组实现-您只能使用一个级别的动态数

我遇到了一个相当普遍的问题,似乎我不能优雅而有效地解决

我必须将任意长字符串的任意长数组传递给solidity契约

在我看来应该是这样的

function setStrings(string [] row)
但这似乎是做不到的


如何解决这个问题?

这是一个坚固性的限制,原因是
字符串基本上是一个任意长度的字节数组(即
字节[]
),因此
字符串[]
是一个二维字节数组(即
字节[]
)。根据,二维数组作为参数还不受支持

合约函数可以接受二维数组吗?

这还没有为外部调用和动态数组实现-您只能使用一个级别的动态数组

解决此问题的一种方法是,如果您预先知道所有字符串的最大长度(在大多数情况下是可能的),则可以执行以下操作:


函数集合字符串(字节[最大长度][]行){…}

作为参数的字符串数组尚不受支持。

您可以将数组元素转换为字节字符串,然后将该字节字符串反序列化回函数内的数组。虽然这可能证明是相当昂贵的,你可以尝试它,如果你没有选择。您可以按照短文对solidity中的任何数据类型进行序列化/反序列化。

字符串数组在solidity中不可用 因为字符串基本上是字符数组
嵌套的动态数组未实现

有两种类型的数组是固定的:静态数组和动态数组

数组声明

静态数组:这些数组具有固定大小

int[5] list_of_students;
list_of_students = ["Faisal","Asad","Naeem"];
我们使用索引号访问这些值

动态数组:这些数组的大小会动态增加或减少

int[] list_of_students;
list_of_students.push("Faisal");
list_of_students.push("Asad");
list_of_students.push("Smith");
我们可以使用索引号访问该值。
push
pop
功能用于插入和删除值。长度函数用于测量阵列的长度。

可以使用
pragma实验系统2
在合同的顶部,您可以使用字符串的动态数组。前任。

string[]内存myStrings

然后如何转换?