映射(Mapping)和地址(Address)
映射_ 是另一种在 Solidity 中存储有组织数据的方法。
//对于金融应用程序,将用户的余额保存在一个 uint类型的变量中:
mapping (address => uint) public accountBalance;
//或者可以用来通过userId 存储/查找的用户名
mapping (uint => string) userIdToName;
映射本质上是存储和查找数据所用的键-值对。在第一个例子中,键是一个 address,值是一个 uint,在第二个例子中,键是一个uint,值是一个 string。
msg.sender
有一些全局变量可以被所有函数调用。 其中一个就是 msg.sender,它指的是当前调用者(或智能合约)的 address
require
require使得函数在执行过程中,当不满足某些条件时抛出错误,并停止执行
合约 inheritance (继承):
contract Doge {
function catchphrase() public returns (string) {
return "So Wow CryptoDoge";
}
}
contract BabyDoge is Doge {
function anotherCatchphrase() public returns (string) {
return "Such Moon BabyDoge";
}
}
合约 inheritance (继承)
由于 子集 是从 父集 那里 inherits (继承)过来的。 这意味着当你编译和部署了 父函数,它将可以访问 父函数 和 子函数和其他我们在 父集 中定义的其他公共函数。
这可以用于逻辑继承(比如表达子类的时候,Cat 是一种 Animal)。 但也可以简单地将类似的逻辑组合到不同的合约中以组织代码。
引入(Import)
在 Solidity 中,当你有多个文件并且想把一个文件导入另一个文件时,可以使用 import 语句:
import "./someothercontract.sol";
contract newContract is SomeOtherContract {
}
存储变量 —— storage 或 memory
Storage 变量是指永久存储在区块链中的变量。
Memory 变量则是临时的,当外部函数对某合约调用完成时,内存型变量即被移除。
大多数时候你都用不到这些关键字,默认情况下 Solidity 会自动处理它们。 状态变量(在函数之外声明的变量)默认为“存储”形式,并永久写入区块链;而在函数内部声明的变量是“内存”型的,它们函数调用结束后消失。
然而也有一些情况下,你需要手动声明存储类型,主要用于处理函数内的 _ 结构体 _ 和 _ 数组 _ 时, 一般这时solidty会提示;文章来源:https://www.toymoban.com/news/detail-405901.html
更多关于函数可见性:internal(内部) 和 external(外部)
父集中的private函数在子集中不可见;
另外两个描述函数可见性的修饰词:internal(内部) 和 external(外部)
internal 和 private 类似,不过, 如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的“内部”函数。
external 与public 类似,只不过这些函数只能在合约之外调用 - 它们不能被合约内的其他函数调用。
声明函数 internal 或 external 类型的语法,与声明 private 和 public类 型相同文章来源地址https://www.toymoban.com/news/detail-405901.html
到了这里,关于Solidty基础篇2-映射、msg、require、继承、引入、存储变量、函数内部和外部可见性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!