打字猴:1.703876687e+09
1703876687 区块链项目开发指南 [:1703875309]
1703876688 区块链项目开发指南 3.9 合约功能
1703876689
1703876690 现在是时候深入学习合约了。我们将看看一些新的功能,还将深入学习已经见过的一些功能。
1703876691
1703876692
1703876693
1703876694
1703876695 区块链项目开发指南 [:1703875310]
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
1703876724 区块链项目开发指南 [:1703875311]
1703876725 区块链项目开发指南 3.9.2 函数修改器
1703876726
1703876727 我们之前看到了函数修改器(function modifier)的概念,还编写了一个基本的函数修改器,现在来深入学习修改器。
1703876728
1703876729 修改器由子合约(child contract)继承,且子合约可以对其重写。可以通过用空格分隔的列表指定修改器将多个修改器应用到一个函数,并将多个修改器按顺序估值;还可以向修改器传送实参。
1703876730
1703876731 在修改器中,无论下一个修改器体或者函数体二者哪个先到达,会被插入到“_”;出现的地方。
1703876732
1703876733 让我们来看一个函数修改器的复杂代码例子:
1703876734
1703876735
1703876736
[ 上一页 ]  [ :1.703876687e+09 ]  [ 下一页 ]