Skip to content

Instantly share code, notes, and snippets.

@fassko
Created June 28, 2022 18:20
Show Gist options
  • Save fassko/5b19bee0c78e3e41aa5d52573b2e696e to your computer and use it in GitHub Desktop.
Save fassko/5b19bee0c78e3e41aa5d52573b2e696e to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.7+commit.e28d00a7.js&optimize=false&runs=200&gist=
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
contract Memory {
struct LuckyNumber {
uint256 number;
string reason;
}
mapping(address => LuckyNumber) luckyNumbers;
function addLuckyNumber(LuckyNumber memory luckyNumber) external {
require(luckyNumber.number != 0, "Lucky number can't be 0!");
require(luckyNumbers[msg.sender].number == 0, "You already have set lucky number. Edit it if you have another one.");
luckyNumbers[msg.sender] = luckyNumber;
}
function editLuckyNumber(uint256 luckyNumber) external {
require(luckyNumber != 0, "Lucky number can't be 0!");
require(luckyNumbers[msg.sender].number != 0, "You don't have a lucky number set yet.");
LuckyNumber storage _luckyNumber = luckyNumbers[msg.sender];
// LuckyNumber memory _luckyNumber = luckyNumbers[msg.sender]; -- This won't work, because of "memory" keyword
_luckyNumber.number = luckyNumber;
}
function getMyLuckyNumber() external view returns(uint256) {
require(luckyNumbers[msg.sender].number != 0, "You don't have a lucky number set yet.");
LuckyNumber memory luckyNumber = luckyNumbers[msg.sender];
return luckyNumber.number;
}
function multiplyByItself(uint256 number) external pure returns(uint256) {
uint256 result = number * number;
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment