AmazingAng / WTF-Solidity

我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用,每周更新1-3讲。Now supports English! 官网: https://wtf.academy
https://wtf.academy
Other
10.75k stars 1.89k forks source link

fix 05_DataStorage description in memory #707

Closed solnex closed 1 month ago

solnex commented 2 months ago

What type of PR is this (这是什么类型的PR)

Which issue(s) this PR fixes(Optional) (这个PR 修复了什么问题 (可选择))

What this PR does / why we need it (这个PR 做了什么/ 我们为什么需要这个PR)

补充string和bytes作为memory赋值给memory的情况

AmazingAng commented 1 month ago

原先的规则没问题,string和bytes作为memory赋值给memory的情况也会创建引用,而不是新的复本。见下面的例子:

pragma solidity ^0.8.20;

contract Test {
    function testString() public pure returns (string memory, string memory) {
        string memory original = "Hello";
        string memory newString = original;

        // 修改新变量
        bytes memory newData = bytes(newString);
        newData[0] = "J";
        newString = string(newData);

        return (original, newString);
    }
}
截屏2024-05-12 15 30 08