SimpleStorage是从
我正在学习一门16小时的坚实课程,但我被卡住了。我搞不清楚SimpleStorage是什么。它是一个类吗?它是导入的文档吗?我不知道。它使用了多次,但方式不同,我很困惑。如果这还不足以解决这个问题,我很乐意分享更多信息。
SimpleStorage[] public simpleStorageArray;
SimpleStorage simpleStorage = SimpleStorage(address(simpleStorageArray[_simpleStorageIndex])).store(_simpleStorageNumber);
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "./SimpleStorage.sol";
contract StorageFactory is SimpleStorage {
SimpleStorage[] public simpleStorageArray;
function createSimpleStorageContract() public {
SimpleStorage simpleStorage = new SimpleStorage();
simpleStorageArray.push(simpleStorage);
}
function sfStore(uint256 _simpleStorageIndex, uint256 _simpleStorageNumber) public {
SimpleStorage simpleStorage = SimpleStorage(address(simpleStorageArray[_simpleStorageIndex])).store(_simpleStorageNumber);
}
import "./SimpleStorage.sol"
导入的合同。实体中的契约是由contract
关键字定义的,该关键字可以被认为是class
。我们在网络中部署这些契约,这些部署的版本可以被视为类的实例。如果你看看任何一个契约,它都有类的定义。主要的区别是,在类中,我们创建了一个这样的新实例:
my_instance=MyClass() # in python
cont myInstance=new MyClass() // javascript
但在合同中,我们在部署合同时会创建实例。我们不能像创建类实例那样创建契约实例。
contract StorageFactory is SimpleStorage{}
这是inheritance
,意味着我们可以访问这里的SimpleStorage
状态变量和函数。
SimpleStorage[] public simpleStorageArray;
我们正在创建一个存储SimpleStorage
契约实例的数组,并将此数组命名为simpleStorageArray
。