/* Structs allow to combine data types into single data words of 32 bytes. Things to keep in mind: 1. Putting a 32 bytes type in a struct is more expensive than keeping it outside. 2. Packing works in multiples of 32 bytes therefore putting a type smaller than 32 bytes alone in a struct does not cause any saving 3. It's possible to pack numbers and strings together. */ struct Struct { uint256 num; } Struct public s; function write() public { s = Struct(1); // 20497 gas } function read() public returns (uint256) { return s.num; // 656 gas } struct Struct { uint128 num1; uint128 num2; } Struct public s; function write() public { s = Struct(1,2); // 20775 gas (instead of 40000+) } function read() public returns (uint128,uint128) { return (s.num1,s.num2) ; // 730 gas } struct Struct { uint128 num1; bytes16 byte1; uint128 num2; bytes16 byte2; } Struct public s; function write() public { s = Struct(1,'2',3,'4'); // 41044 gas (instead of 80000+) } function read() public returns (uint128,bytes16,uint128,bytes16) { return (s.num1,s.byte1,s.num1,s.byte2); // 1014 gas }
0.4.24