我不会讲太多细节,因为我们已经知道Solidity 源文件是什么样的,但我们将讨论这段代码的作用并编译它以查看交互。
如果您来自JavaScript世界,您会注意到代码在样式和语法级别上是相似的。
我们的示例合约是一个简单的输入/输 科威特消费者电子邮件列表 出合约。它将做的是创建并返回问候语。
杂注
杂注声明
正如您所记得的,在声明合约许可证后,Solidity 要求您使用pragma声明合约将运行的版本。
状态变量
状态变量的声明
我们做的第二件事是创建状态变量。这些变量存储在区块链中。
从代码中可以看出,Solidity 是一种强类型语言,这就是为什么我们必须声明变量的类型。在本例中为字符串。我们还将访问修饰符声明为public。如果我们将其声明为私有,它在区块链上仍然可见。
记忆
声明 setter、getter 和存储选项
在构造函数中,除了字符串类型之外,我们还声明了内存。事实证明,在 Solidity 中,变量可以以不同的方式存储。存储变量的三个选项是“ storage ”、“ memory ”和“ calldata ”。您可以在这里了解有关它们的更多信息。
您会看到“内存”是一种位于临时内存中的变量,当函数退出时会被删除。对于我们示例中的变量来说就足够了。
在 getGreeting() 中查看
在 getGreeting() 函数中我们还声明了视图。如果您还记得上周有关函数修饰符的文章,那么view和pure是最常用的两个修饰符。在这种情况下,视图意味着该函数不会更改区块链中的任何数据。
Abi.encodePacked()
在 Solidity 中,我们无法以简单的方式连接变量,就像在 JavaScript 或PHP中分别使用“+”或“.”一样。因此,为了获得问候语“Hello Chiyana”并进行连接,我们使用abi.encodePacked (greetingPrefix, name)) 作为辅助函数。
使用 Remix 进行编译和部署
在 Remix 中编译
Solidity 是一种像Java或 C一样的编译语言,Remix 允许我们编译它。您可以通过单击“Compile 3_Greeting.sol”按钮来完成此操作。
然后,在侧边栏中访问“部署并运行事务”。在这种情况下,我们不会部署在真正的区块链中,而是部署在测试环境(沙箱)中。