-
Notifications
You must be signed in to change notification settings - Fork 1
/
StructAndEnum.cairo
85 lines (66 loc) · 2.63 KB
/
StructAndEnum.cairo
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
80
81
82
83
84
############################################################################################################
# #
# Cairo #
# #
############################################################################################################
struct exampleStruct:
member first_member : felt
member second_member : felt
member third_member : felt
end
# Cairo doesn’t have enums, but you can abuse a struct as an enum. For example:
struct exampleEnum:
member first_process: felt
member second_process: felt
member third_process: felt
end
#### Setters ####
exampleStruct.first_member = 1
exampleStruct.second_member = 2
exampleStruct.third_member = 3
# to as an array
@storage_var
func _structs(struct_id: felt) -> (res : exampleStruct)
end
let new_struct = exampleStruct(
first_member=1
second_member=2
third_member=3
)
_structs.write(struct_id,new_struct)
############################################################################################################
# #
# Solidity #
# #
############################################################################################################
### Setters ##
struct ExampleStruct {
uint256 first_member;
string second_member;
address third_member;
}
ExampleStruct memory exampleStruct = ExampleStruct(1,"example",msg.sender);
# or
ExampleStruct memory exampleStruct;
exampleStruct.first_member = 1;
exampleStruct.second_member = "example";
exampleStruct.third_member = msg.sender;
# to as an array
ExampleStruct[] public ExampleStructs;
ExampleStructs.push(exampleStruct);
# or
mapping(uint256 => ExampleStruct) public ExampleStructs;
ExampleStructs[id] = exampleStruct;
# Enums
enum ExampleEnum{
first,
second,
third
}
ExampleEnum public exampleEnum;
exampleEnum = ExampleEnum.first;
### Getters ##
uint id = 0;
ExampleStructs[id].first_member;
ExampleStructs[id].second_member;
ExampleStructs[id].third_member;