智能合约实战 solidity 语法学习 04 [ 函数修饰符 view public private constant payable ] 附代码

本文深入探讨Solidity中的函数修饰符,包括`public`、`private`、`external`、`internal`、`view`、`payable`等,解析其在智能合约中的使用场景及权限控制,附带实例代码。
摘要由CSDN通过智能技术生成

 

 

public

共有,均可调用

private      

私有,只有智能合约内部可以调用;

external 

仅合约外部可以调用,合约内部可以使用this调用;

contract HelloGuanjianzi {
 
    uint public num = 0;
    // public view 未修改成员变量
    function testPublic() public pure {
         
         // testExternal(); 调用外部方法会编译报错
         testInternal();
    }

    // private remix部署后不展示此方法
    function testPrivate() private pure {
         
    }
 
    // pure 未使用状态变量
    function isEqual(int a, int b) public pure returns(bool) {
       return a == b;
    }

    // external
    function testExternal() external pure{

    }

    // internal remix部署后不展示此方法
    function testInternal() internal p
Solidity 中,函数访问修饰符用于限制函数的访问权限,以确保只有满足特定条件的地址或账户才能调用该函数。以下是 Solidity 中常用的访问修饰符及其用法: 1. public:公共函数,任何地址都可以调用。 2. private私有函数,只能在当前合约内部调用。 3. internal:内部函数,只能在当前合约内部或继承该合约的合约中访问。 4. external:外部函数,只能通过外部交互(如消息调用)方式调用,不能在合约内部直接调用。 以下是一个简单示例,演示如何使用访问修饰符限制函数的访问权限: ``` pragma solidity ^0.8.0; contract AccessControl { address public owner; constructor() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "Only owner can call this function"); _; } function changeOwner(address _newOwner) public onlyOwner { owner = _newOwner; } function publicFunction() public { // 可以被任何地址调用 } function privateFunction() private { // 只能在当前合约内部调用 } function internalFunction() internal { // 只能在当前合约内部或继承该合约的合约中访问。 } function externalFunction() external { // 只能通过外部交互(如消息调用)方式调用,不能在合约内部直接调用。 } } ``` 在上述示例中,我们定义了一个 onlyOwner 修饰符,用于限制只有合约所有者才能调用 changeOwner 函数。而 publicFunction 可以被任何地址调用,而 privateFunction 只能在当前合约内部调用,internalFunction 只能在当前合约内部或继承该合约的合约中访问,externalFunction 只能通过外部交互方式调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

www_vane

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值