Solidity 中的动态数组及其操作
动态数组是在运行时分配内存的数组,内存是从堆中分配的。
句法:
// declaration of dynamic array
int[] private arr;
它们与固定大小的数组有何不同?
固定大小的数组具有固定的内存大小,而在动态数组中,大小可以在运行时随机更新,这对于代码的内存复杂性而言可能被认为是有效的。
问题:如何在solidity中创建动态数组并执行相关操作?
解决方案:在本文中,我们将使用solidity 语言创建动态数组,并对其执行以下操作:
- 在数组中添加数据
- 获取数组的数据
- 获取数组长度
- 获取数组元素的总和
- 搜索数组中的特定元素
什么是可靠性?
Solidity 是一种高级语言。 Solidity 中智能合约的结构与面向对象语言中的类结构非常相似。 Solidity文件的扩展名为 .sol 。
什么是智能合约?
Solidity 的代码封装在合约中,这意味着 Solidity 中的合约是驻留在以太坊区块链上特定地址的代码(其功能)和数据(其状态)的集合。合约是在以太坊上构建应用程序的基本块。
第 1 步:打开 Remix-IDE。
步骤 2:从左侧图标中选择文件资源管理器,然后在环境中选择 Solidity。单击 Solidity 环境下方的新建选项。输入文件名为 dynamicArray.sol 并单击 OK 按钮。
第 3 步:输入以下 Solidity 代码。选择与代码中相同的 Solidity 版本。
Solidity
// Solidity program to demonstrate
// the above approach
pragma solidity ^0.6.8;
contract DynamicArray{
// Declaring state variable
int[] private arr;
// Function to add data
// in dynamic array
function addData(int num) public
{
arr.push(num);
}
// Function to get data of
// dynamic array
function getData() public view returns(int[] memory)
{
return arr;
}
// Function to return length
// of dynamic array
function getLength() public view returns (uint)
{
return arr.length;
}
// Function to return sum of
// elements of dynamic array
function getSum() public view returns(int)
{
uint i;
int sum = 0;
for(i = 0; i < arr.length; i++)
sum = sum + arr[i];
return sum;
}
// Function to search an
// element in dynamic array
function search(int num) public view returns(bool)
{
uint i;
for(i = 0; i < arr.length; i++)
{
if(arr[i] == num)
{
return true;
}
}
if(i >= arr.length)
return false;
}
}
第 4 步:从 Solidity Compiler选项卡编译文件dynamicArray.sol 。
步骤 5:从Deploy and Run Transaction 选项卡部署智能合约。
第六步:对已部署合约部分下的数组进行各种操作。