1 原文链接在这里:Solidity — Solidity 0.5.0 documentation,还主要参考了孔壹学院的视频,链接在这里:
编写智能合约1 :https://www.bilibili.com/video/av23371470/?p=11
注意这里的属性internal是solidity语言里默认的属性,它不能被外部访问,同时属性private也不能被外界访问,只有属性public才能被外界访问。
当属性类型为public时,会返回一个与属性名相同的get函数。
但是这里的get函数会覆盖掉原来的属性值。比如该代码(_money)返回值为120,而不是前面的0。
2 方法和行为就是合约里的函数。
智能合约2 :合约中的方法
function +方法名()+方法属性(返回值类型){具体函数内容}
合约中函数中方法的属性默认为public,在以太坊中可以被外部调用。此时编译可以得到四个值。
对上面的智能合约2 进行了修改如下所示:
在这里height 方法和money方法的属性分别被修改为internal和private。这表示他们不会被外部所调用,在编译后不会显示。而age和weight均为public都在编译后可见。
3 对合约1 的修改并在Remix上编译如下:
具体代码:
”编译结果如下:
这里给出解释:出现了两个方法:test1和test的,因为test和test1在合约中均是public的,可以被外部调用,出现一个属性_money,因为只有这个属性在前面被声明为public的。其余属性都不可见,至于test中没有返回值,是因为_age 属性在前面被声明为internal的。
继续修改以上合约:
在以上我们又写了四个方法,用来内部调用,注意这里的this.表示指针,在调用test和test1时由于是public类型,它们可以用this指针,但是internal和private 由于他们是内部的函数,是不能用this指针调用的,如果用this会报错的!
可以采取代码中的形式进行直接调用。
网友评论