本文介绍了Solidity中的变量(包括状态变量、局部变量和全局变量)、数据类型(如uint、bool、address、string等)以及函数的概念和常用修饰符(public、private、view、pure等)。并通过一个简单的MyProfile合约示例,演示了如何存储和更新名称,以及如何返回当前名称。文章还提供了一个小挑战,鼓励读者创建一个新的智能合约。
欢迎回到 30 天 Solidity 新兵训练营的第 4 天! 如果你一直在关注 — 真是太棒了! 到目前为止,你已经编写了你的第一个智能合约,探索了 Remix,并且已经熟悉了 Hardhat。 今天,我们将深入研究 Solidity 的核心构建块 — 变量、数据类型和函数。
无论你以前是否编写过代码,还是这是你第一次编写代码,你都会发现一旦掌握了这些基本要素,Solidity 就非常直观。
在 Solidity 中,变量是我们如何在合约中存储和管理数据的方式。 变量主要有三种类型:
uint public age; // 这是一个状态变量
address public owner;
uint
是无符号整数(仅限整数),public
使其可以在合约外部访问。
function getAge() public view returns (uint) {
uint tempAge = age; // 局部变量
return tempAge;
}
msg.sender
、block.timestamp
、block.number
function getSender() public view returns (address) {
return msg.sender; // 全局变量
}
Solidity 支持多种数据类型,包括:
int
— 有符号整数(可以是负数)true
或 false
例子:
string public name = "Priya";
bool public isActive = true;
函数定义了合约的逻辑和操作。
function multiply(uint a, uint b) public pure returns (uint) {
return a * b;
}
常见的函数修饰符:
public
:任何人都可以访问private
:仅在此合约内可用view
:读取状态但不更改它pure
:不读取或修改状态internal
在合约及其派生合约中external
只能从外部访问函数是奇迹发生的地方 — 从铸造 NFT 到转移代币。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyContract {
uint public number; // 状态变量
function setNumber(uint _num) public {
number = _num; // 修改状态变量
}
function getBlockTime() public view returns (uint) {
return block.timestamp; // 使用全局变量
}
}
在 Remix 上创建一个新的智能合约,执行以下操作:
✅ 存储你的名字
✅ 具有更新名称的函数
✅ 返回当前名称
这是一个好的开始:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyProfile {
string public name; function setName(string memory _name) public {
name = _name;
} function getName() public view returns (string memory) {
return name;
}
}
尝试修改它以添加年龄或布尔值!
🚀 明天即将到来 — 第 5 天:
我们将探索条件语句、循环和事件 — 合约逻辑背后的控制流!
保持好奇心,保持一致。
- 原文链接: coinsbench.com/solidity-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!