forked from AmazingAng/WTF-Solidity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ArrayAndStruct.sol
79 lines (70 loc) · 2.03 KB
/
ArrayAndStruct.sol
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
contract ArrayTypes {
// Array de comprimento fixo
uint[8] array1;
bytes1[5] array2;
address[100] array3;
// Array de comprimento variável
uint[] array4;
bytes1[] array5;
address[] array6;
bytes array7;
// Inicializando um Array de comprimento variável
uint[] array8 = new uint[](5);
bytes array9 = new bytes(9);
// Atribuindo valores a um array de comprimento variável
function initArray() external pure returns(uint[] memory){
uint[] memory x = new uint[](3);
x[0] = 1;
x[1] = 3;
x[2] = 4;
return(x);
}
function arrayPush() public returns(uint[] memory){
uint[2] memory a = [uint(1),2];
array4 = a;
array4.push(3);
return array4;
}
}
pragma solidity ^0.8.21;
contract StructTypes {
// Estrutura Struct
struct Student{
uint256 id;
uint256 score;
}
// Inicialize uma estrutura de dados chamada "student"
// Atribuindo valores a uma estrutura
// Método 1: Criar uma referência struct para storage dentro da função
function initStudent1() external{
// atribuir uma cópia do estudante
_student.id = 11;
_student.score = 100;
}
// Método 2: Referenciando diretamente a struct da variável de estado
function initStudent2() external{
student.id = 1;
student.score = 80;
}
// Método 3: Construtor funcional
function initStudent3() external {
student = Student(3, 90);
}
// Método 4: chave valor
function initStudent4() external {
student = Student({id: 4, score: 60});
}
}
pragma solidity ^0.8.21;
contract EnumTypes {
// Comprar, Manter, Vender
enum ActionSet { Buy, Hold, Sell }
// Criar uma variável enum chamada "action"
ActionSet action = ActionSet.Buy;
// enum pode ser convertido explicitamente para uint
function enumToUint() external view returns(uint){
return uint(action);
}
}