Solidity学习代码示例 - 第一节

掌握了Solidity的基本语法后,我们开始从一些简单的代码层面上来慢慢深入学习Solidity这门语言。在这篇文章中,我将会在代码层面带着大家去实现我们想要的逻辑,带着大家一起感受Solidity这门语言,我们所有的代码编译部署都是在智能合约在线编辑器完成的。接下来,让我们开始吧!

示例1
在这个示例中,我们就声明了一个变量data,它是public的。合约中,我们有一个写入的方法setData和一个读取的方getData。通过这两个方法,我们可以实现对数据的写入和读取。具体代码细节,请看代码中的注释。通过示例1,我们简单掌握合约的写法要使用pragma来声明版本,要用contract开头加一个SaveData1合约名开始我们的合约编写。声明一个简单的变量,编写两个简单的函数方法来实现数据的写入和读取。这个示例,我们掌握了这几个简单的编程写法即可。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SaveData1 {

    string public data; // 声明一个变量,这个变量是public,代表着所有人都可以查看

    function setData(string memory _data) external { // 存data,此时函数方法用的是external而不是public,因为用external可以减少合约部署被以太坊收取的手续费
        data = _data;
    }

    function getData() view external returns(string memory) { // 获取data,通过这个方法,我们可以查看到存放的data的值
        return data;
    }

}

示例2
在这个示例中,我们从前面示例1代码的基础上,增加了数组,通过数组我们可以将写入的数据放进数组中,通过getAllData()方法可以查询到所有的数据。在这个示例,我们掌握如何声明数组,使用数组存放数据的写法就好。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SaveData2 {

    string public data; // 声明一个变量,这个变量是public,代表着所有人都可以查看

    string[] public datas; // 声明一个数组

    function setData(string memory _data) external { // 存data,此时函数方法用的是external而不是public,因为用external可以减少合约部署被以太坊收取的手续费
        data = _data;
        datas.push(_data); // 将每次存放的data的值装到数组里
    }

    function getData() view external returns(string memory) { // 获取data,通过这个方法,我们可以查看到存放的data的值
        return data;
    }

    function getAllData() view external returns(string[] memory) { // 获取所有的datas,通过这个方法,我们可以查看到所有存放的datas的值
        return datas;
    }

}

示例3
在这个示例中,我们在原来的示例1和示例2的基础上又添加了一个新的功能mapping,通过mapping,我们可以将用户和data绑定在一起,通过getUserData()这个方法可以查看到当前这个用户的所有的data。在使用mapping的时候,我们在setData()这个方法里将datas与用户绑定在一块。好好的琢磨下下面的写法,看着注释,我们就能理解了。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SaveData3 {

    string private data; // 声明一个变量,这个变量是private,不让其他人查看

    string[] datas; // 声明一个数组,这里不给它声明是否可见

    mapping(address=>string[]) maps; // 映射 address代表用户的地址,string[]代表data的数据

    function setData(string memory _data) external { // 存data,此时函数方法用的是external而不是public,因为用external可以减少合约部署被以太坊收取的手续费
        data = _data;
        datas.push(_data); // 将每次存放的data的值装到数组里
        maps[msg.sender] = datas; // 将存放的数据与用户的地址绑定在一起。这里的msg.sender在solidity的语法里代表的是当前的调用方法的这个用户
    }

    function getAllData() view external returns(string[] memory) { // 获取所有的datas,通过这个方法,我们可以查看到所有存放的datas的值
        return datas;
    }

    function getUserData() view external returns(string[] memory) { // 查看当前调用这个方法的用户的所有数据
        return maps[msg.sender];
    }

}

好了,在这一节中,我们主要掌握合约的基本写法,以及数组,映射的使用。我们不讲究太快,我们学习就慢慢来,慢慢来,会很快。在下一节中,我们再以这篇文章的示例再往代码上层层深入,一点一点加入新的代码知识点,带领大家慢慢的走进solidity语言。让我们下一节再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值