-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path24-StorageAndMemorySample2.sol
More file actions
38 lines (31 loc) · 1.52 KB
/
24-StorageAndMemorySample2.sol
File metadata and controls
38 lines (31 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//SPDX-License-Identifier: MIT
pragma solidity >= 0.8.0;
contract StorageAndMemorySample {
struct User {
string name;
}
uint8[2] public s_numbers; //storage da saklanır
mapping(uint8 => User) public s_users; //storage da saklanır
constructor() {
s_numbers[0] = 1;
s_numbers[1] = 2;
s_users[1] = User("engin");
}
function StorageAndMemoryTest() public {
//storage ıcın ornekler
uint8[2] storage x = s_numbers; //x degiskenine s_numbers storage referansı atanır.
x[0] = 100; // yapılan degisiklikler s_numbers üzerinde olur.
//mapping ornegi
mapping(uint8 => User) storage y = s_users; //y degiskenine s_users storage referansı atanır.
y[1] = User("user 1"); //yapılan degisiklikler s_users uzerinde yapılmıs olur.
y[2] = User("user 2"); //yapılan degisiklikler s_users uzerinde yapılmıs olur.
//mapping icin baska bir ornek
User storage z = s_users[1]; //z degiskenine s_users[1] storage referansı atanır.
z.name = "user 3"; //yapılan degisiklikler s_users[1] uzerinde yapılmıs olur.
//memory icin ornekler
uint8[2] memory mx = s_numbers; //mx degiskenine s_numbers storage degiskeni değeri kopyalanır.
mx[0] = 200; // yapılan degisiklikler sadece mx üzerinde olur.
User memory mz = s_users[1]; //s_users[1] storage'daki user değeri mz'ye kopyalanır.
mz.name = "user 4"; //yapılan degisiklikler sadece mz uzerinde yapılmıs olur.
}
}