函数返回值,静态动态数组

打印 上一主题 下一主题

主题 698|帖子 698|积分 2098

新建函数,并确定返回值
  1. function New1() public pure returns(uint,bool){
  2.         return (98,true);
  3.     }
  4.     function New2() public pure returns (uint x,bool b){
  5.         return(5,false);
  6.     }
  7.     function New3() public pure returns (uint x,bool b){  
  8.         x=64;
  9.         b=true;
  10.     }
复制代码
通例写法如上,假如想通过一个函数返回值给另一个函数
  1. //承接函数的多种写法
  2.     function New4() public pure  returns (uint x, bool b){
  3.         ( x, b) = New1();
  4.         //只返回一个数据
  5.         //(uint x,) = New1();
  6.         //(, bool b) = New1();   
  7.     }
  8.     function New4() public pure  returns (uint , bool){
  9.         (uint x,bool b) = New1();
  10.         return (x,b);  
  11.     }
  12.     function New4() public pure  returns (uint , bool){
  13.         (,bool b) = New1();
  14.         (uint x,) = New1();
  15.         return (x,b);  
  16.     }
复制代码
如上假如想通过一个函数给另一个函数提供返回值则可以采取三种方法,但是要注意返回值的数据类型,两个函数要保持一致。
 
对于静动态数组。
  1. uint[] public nums1 = [1,2,3]; //动态数组,长度可变
  2. uint[3] public nums2 = [4,5,6];//定长数组,长度不可变,且必须初始化所有元素
复制代码
此中有些特别的写法,包括增删。
  1. function New1() public {
  2.         nums1.push(4); //向数组尾部添加数据
  3.         x = nums1[1];  //赋值
  4.         delete nums1[1]; //删除原先数据,并填充为0
  5.         nums1.pop();  //将数组的最后一位弹出
  6.         k = nums1.length; //得出数组长度
  7.     }
复制代码
对于数组的赋值,差别与其他语言的直接根据索引或者地址来对应赋值,Solidity中的数组赋值起首要确定命组长度,对于静态数组没什么好说的,长度一定不可修改,直接循环赋值就行。对于动态数组,起首确定吸收数组的长度,例如先创建一个跟数组new1相同类型的动态数组new3,然后
  1. nums3 = new uint[](nums1.length);
复制代码
假如想临时创建数组来赋值
  1. uint[] memory result = new uint[](nums1.length);
复制代码
用来确定长度,之后用“for”循环
  1. for (uint i = 0; i < nums1.length; i++) {
  2.             nums3[i] = nums1[i];
  3.         }
  4. for (uint i = 0; i < nums1.length; i++) {
  5.             result[i] = nums1[i];
  6.         }
复制代码
将动态数组new1中的元素赋值给数组new3和result

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表