solidity中一个很常见的字符串数组string array问题

简介: 我遇到了一个很常见的字符串数组string array问题,不能很好地解决。问题是这样我必须把任意长度的字符串传递给一个solidity智能合约。

我遇到了一个很常见的字符串数组string array问题,不能很好地解决。

问题是这样我必须把任意长度的字符串传递给一个solidity智能合约。

我觉得这样就可以:

function setStrings(string [] row)

但实际上不太对。

这里有一个solidity的限制,原因是String字符串基本上是任意长度的byte array字节数组(即byte[]),因此String []是二维字节数组(即byte[][])。根据solidity的说法,二维数组作为参数还不支持。

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

这还没有实现外部调用和动态数组——只能使用一维的动态数组。

解决这个问题的一个办法是,如果你知道所有的字符串的最大长度(在大多数情况下都有可能),那么可以这样:

function setStrings(byte[MAX_LENGTH][] row) {...}

也可以尝试将数组元素转换为字节字符串,然后将该字节串反序列化为函数内的数组。这样做比较昂贵的,如果你没有选择的话。

原文:http://cw.hubwiz.com/card/c/ethereum-FAQ/1/1/3/

另外推荐一些之前的教程:

  • python以太坊,主要是针对python围绕web3.py进行区块链以太坊应用开发的讲解。
  • web3j,主要是针对java和android程序员围绕web3j库进行区块链以太坊开发的讲解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
相关文章
|
3月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
64 1
|
3天前
|
索引 Python
String(字符串)
String(字符串)。
11 3
|
25天前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
35 4
|
28天前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
30天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
11天前
|
JavaScript 前端开发 开发者
|
1月前
|
canal 安全 索引
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
33 5
|
1月前
|
存储 JavaScript 前端开发
JavaScript Array(数组) 对象
JavaScript Array(数组) 对象
25 3
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
41 3
|
1月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)

热门文章

最新文章