1703876696
区块链项目开发指南 3.9.1 可见性
1703876697
1703876698
函数或者状态变量的可见性定义了谁可以看到它。函数和状态变量有四种可见性:external、public、internal和private。
1703876699
1703876700
函数可见性默认为public,状态变量可见性默认为internal。各可见性函数的含义如下:
1703876701
1703876702
·external。外部函数只能由其他合约调用,或者通过交易调用。外部函数f不能被内部函数调用,也就是说,f()没有用,但是this.f()有用。不能把external可见性应用到状态变量。
1703876703
1703876704
·public。公共函数和状态变量可以用所有可行办法访问。编译器生成的存取器(accessor)函数都是公共状态变量。用户不能创建自己的存取器。事实上,它只生成getters,而不生成setters。
1703876705
1703876706
·internal。内部函数和状态变量只可以内部访问,也就是说,从当前合约内和继承它的合约访问。不可以使用this访问它。
1703876707
1703876708
·private。私有函数和状态变量类似于内部函数,但是继承合约不可以访问它们。
1703876709
1703876710
下面给出了可见性和存取器(accessor)的一个示例:
1703876711
1703876712
1703876713
1703876714
1703876715
1703876716
1703876717
1703876718
1703876719
1703876720
1703876721
1703876722
1703876723
1703876725
区块链项目开发指南 3.9.2 函数修改器
1703876726
1703876727
我们之前看到了函数修改器(function modifier)的概念,还编写了一个基本的函数修改器,现在来深入学习修改器。
1703876728
1703876729
修改器由子合约(child contract)继承,且子合约可以对其重写。可以通过用空格分隔的列表指定修改器将多个修改器应用到一个函数,并将多个修改器按顺序估值;还可以向修改器传送实参。
1703876730
1703876731
在修改器中,无论下一个修改器体或者函数体二者哪个先到达,会被插入到“_”;出现的地方。
1703876732
1703876733
让我们来看一个函数修改器的复杂代码例子:
1703876734
1703876735
1703876736
1703876737
1703876738
1703876739
1703876740
1703876741
myFunction()的执行代码如下:
1703876742
1703876743
1703876744
[
上一页 ]
[ :1.703876695e+09 ]
[
下一页 ]