Solidity(2)-第一个SimpleStorage

本文详细介绍了Solidity的基础数据类型,包括视图函数、纯净函数的使用,以及数组、结构体和映射的语法。通过示例展示了如何定义和操作这些元素,并提到了错误警告和内存、存储的概念。文章以一个简单的智能合约结束,为后续的部署奠定基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



前言

本文主要介绍了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可以修改的永久变量

总结

这里一个最基本的合约形成,我可以去通过以上内容去部署了。下一期完成部署。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值