以太坊智能合约开发:Solidity语言中的映射

这篇具有很好参考价值的文章主要介绍了以太坊智能合约开发:Solidity语言中的映射。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文我们介绍Solidity语言中的映射,包括映射的基本定义、语法、映射的变量声明和基本读写操作。并且通过两个智能合约例子演示了映射的定义与基本操作。

基本概念

Solidity中关于映射的一些定义:

  • 映射以键-值对(key => value)的形式存储数据;
  • 键可以是任何内置数据类型,包括字节和字符串类型,但不允许引用类型,如数组、结构体和映射;
  • 值可以是任何数据类型,包括另一个映射或数组;
  • 映射是不可迭代的,即无法通过遍历映射来枚举所有的键;
  • 映射通常用于将唯一的以太坊地址与值类型关联起来。

声明语法

映射的定义语法如下:

mapping(key => value) <access specifier> <name>;

例如:

mapping(address => uint) public balances;

以上代码声明了一个从 address 类型到 uint 类型的映射,可见性权限是 public,名称为 balances

合约例子

例子1

演示映射的定义,基本的数据添加和读取操作。

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

// 映射
contract Mapping {
    // address => uint
    mapping(address => uint) public map;

    // 取值
    function get(address _addr) public view returns(uint) {
        // 如果值未设置,则返回默认值
        return map[_addr];
    }

    // 设置
    function set(address _addr, uint i) public {
        map[_addr] = i;
    }

    // 删除
    function remove(address _addr) public {
        // 删除不改变数据长度
        delete map[_addr];
    }
}

输出:我们在Remix中编译、部署和运行上面的合约例子,执行结果如下图:

智能合约还有什么样的场景可以用到mapping映射,区块链,智能合约,区块链

例子2

一个嵌套映射的例子,映射的值为另一个映射。

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

// 嵌套映射
contract MappingNested {
    // address => mapping
    mapping(address => mapping(uint => bool)) public map;

    // 取值
    function get(address _addr, uint _i) public view returns(bool) {
        // 如果值未设置,则返回默认值
        return map[_addr][_i];
    }

    // 设置
    function set(address _addr, uint _i, bool _boo) public {
        map[_addr][_i] = _boo;
    }

    // 删除
    function remove(address _addr, uint _i) public {
        // 删除不改变数据长度
        delete map[_addr][_i];
    }
}

输出:我们在Remix中编译、部署和运行上面的合约例子,执行结果如下图:

智能合约还有什么样的场景可以用到mapping映射,区块链,智能合约,区块链文章来源地址https://www.toymoban.com/news/detail-744562.html

到了这里,关于以太坊智能合约开发:Solidity语言中的映射的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 以太坊智能合约开发(五):Solidity成绩录入智能合约实验

    每个学生分别部署合约Student.sol ,保证只有自己可以修改姓名。老师部署合约StudentScore.sol,用于录入学生成绩,查询学生信息。查询学生信息时,需要调用学生部署的合约Student.sol。 student.sol合约,用于学生对自己信息进行管理。 学生的基本信息作为状态变量: 声明构造函

    2024年02月07日
    浏览(48)
  • 基于以太坊的智能合约开发Solidity(基础篇)

    参考教程:基于以太坊的智能合约开发教程【Solidity】_哔哩哔哩_bilibili (1)程序编译完成后,需要在虚拟机上运行,将合约部署好后便可执行刚刚编写的函数。(注意, 合约一旦部署,就会永久存在于区块链上,且不可篡改 ,不过可以销毁) (2)执行完成后,可以得到以

    2024年02月04日
    浏览(57)
  • 基于以太坊的智能合约开发Solidity(事件&日志篇)

    (1)事件用于记录在区块链上的特定活动,“emit ValueChanged(newValue);”语句的作用是触发ValueChanged事件(首先需要声明事件)。 ①触发事件后会生成相应日志,上图黄框就是“emit ValueChanged(newValue);”语句产生的日志,其中“form”指的是触发事件的合约账户。 ②事件主要是供

    2024年02月04日
    浏览(44)
  • 基于以太坊的智能合约开发Solidity(内存&结构体篇)

    参考教程:【内存、引用与持久化存储】1、内存与区块链——storage与memory原理_哔哩哔哩_bilibili (1)所有的复杂类型,即数组、结构和映射类型,都有一个额外属性——“数据位置”,用来说明数据是保存在内存memory中还是存储storage中,保存在memory中的数据,在函数执行完

    2024年02月04日
    浏览(57)
  • 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一)

    前面一篇关于 智能合约 翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用 程序语言 去编写 智能合约 了。 而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂 智能合约 代码,或找出其中的漏洞,那么,学习 Solidity 这门高级的智能合约语言是有

    2023年04月16日
    浏览(96)
  • 第四章 以太坊智能合约solidity介绍

    Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言,设计的目的是能在以太坊虚拟机上运行。 本章大概介绍合约的基本信息,合约的组成,语法方面不做过多的介绍,个人建议多阅读官方文档效果更佳,后续的章节会开发ERC20代币合约案例以便于更好的学习智

    2024年02月06日
    浏览(51)
  • Solidity智能合约开发 — 3.4-抽象智能合约和接口

    假如一个智能合约中至少一个函数缺省实现时,即某个函数缺少{}中的内容,这个智能合约就当做抽象智能合约。 当我们有一个函数没想好怎么写时,必须将该合约标为 abstract ,不然编译会报错;另外,未实现的函数需要加 virtual ,以便子合约重写。抽象智能合约是将智能合

    2024年02月12日
    浏览(45)
  • 区块链智能合约编程语言 Solidity

    上文介绍了区块链生态发展,我们知道以太坊的到来可以使开发人员基于区块链开发DApp,本文介绍 Solidity 编程语言的使用,然后基于 Solidity 编写一个简单的智能合约。 Solidity 是以太坊开发人员使用的编程语言,用来编写智能合约,运行在以太坊虚拟机(EVM)上。 有开发经

    2024年02月12日
    浏览(60)
  • solidity开发智能合约

    起源于以太坊(Ethereum),设计的目的是能在以太坊虚拟机(EVM)上运行。Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。所以先从智能合约开始。 参考文档 Solidity文档:区块链技术-智能合约Solidity编程语言 solidity官方文档: https://solidity-cn.readthedocs.io/

    2023年04月08日
    浏览(83)
  • 了解 Solidity 语言:构建智能合约的首选编程语言

    Solidity 是一种用于 编写智能合约 的高级编程语言,广泛应用于以太坊和其他以太坊虚拟机(EVM)兼容的区块链平台。它是以太坊智能合约的首选语言之一,具有丰富的功能和灵活性,使得开发者可以构建各种类型的去中心化应用(DApps)和智能合约 合约编程 : Solidity 是一种

    2024年04月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包