前言
本文主要介绍了solidity的基本数据类型、数组的基本用法
提示:以下是本篇文章正文内容,下面案例可供参考
一、Solidity基础数据类型
uint256 defaultNumber;//This gets initialized to zero!
bool hasFavoriteOption = true;
uint256 FavoriteNumber = 100;//可以通过后面数字分配空间int也可
string FavoriteString = "my name is -HH-";
int256 FavoriteIntNumber = -100;
address myAddress = 0x4025E83e86a65Eee39DCA8dD7958e7A053ca992E;
bytes32 FavoriteBytes = "cat";
二、视图函数与纯净函数
简介:Solidity 语言有两类和状态读写有关的函数类型,一类是 view 函数(也称为视图函数),另一类是 pure 函数(也称为纯函数)。view函数仅仅获取值并返回值,pure函数此类函数是纯净函数也就是完成数据运算,算法一类的。
示例:
function retrieve() public view returns(uint256){//这里的returns关键字就是为了告诉我们是否返回一个uint256
return defaultNumber;
}
//此类函数是纯净函数(就是完成数据运算,算法一类的)
function add() public pure returns (uint256){
return(1+1);
}
注意:1、如果是一个纯净的函数或者视图,那么将不会消耗gas。也就是没有对blockchain改变。 2、如果有一个改变区块链状态的函数去调用pure function or view 那么这是唯一消耗gas的情况
例如:
俩个图片进行对比就明显能看出
三、Arryays and Structs(数组和结构)
定义一个对象类型
struct People {//定义一个对象类型
uint256 favortiteNumber;
string name;
}
在定义一个People类型的对象,同时用数组的方式去定义多个对象。
People public person = People({favortiteNumber:2,name:"HH"});/*这里部署完了就会出现一个person,因为它自带一个getterfucntion*/
//用数组的方式去定义多个人
People[] public morePeople;//同时,此数组将会有个输入框,这个输入框应输入morePeople的索引
俩种方式去输入数据
function addPerson(string memory _name, uint256 _favoriteNum) public {
//method one:
//morePeople.push(People(_favoriteNum,_name));
//method two:
People memory newPerson = People({favortiteNumber:_favoriteNum,name:_name});//注意此处需要数据必须为存储、变量的内存或调用数据,这里需要加一个memory
morePeople.push(newPerson);
}
这边搜索通过数组的索引去实现搜索数据
四、map
mapping(string => uint256) public nameToFavorateNumber;
function addPersonMappings(string memory _name, uint256 _favoriteNum) public {
nameToFavorateNumber[_name]= _favoriteNum;
}
只需要在对应按钮的位置去搜索key值就能找到对应的值
五、Other
//******ErrorsAndWarnings//
这里的warning与java的一致,无法阻止你运行程序
//**Memory,Storage,calldata//
calldata与memory只是暂时存在的,storage甚至在执行的函数之外。
calldata与memory是可以修改的临时变量,storage可以修改的永久变量
总结
这里一个最基本的合约形成,我可以去通过以上内容去部署了。下一期完成部署。