// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
// Define a contract named StorageTomemoryValueTypeAssignment
contract StorageTomemoryValueTypeAssignment {
? ? // Declare a state variable 'stateVar' of type uint (unsigned integer)
? ? // and initialize it with the value 20.
? ? // This variable is stored on the blockchain and its state persists
? ? // across function calls.
? ? uint stateVar = 20;
? ? // Define a function 'getUInt' that is public and returns an unsigned integer.
? ? // This function demonstrates how assignment works between storage and memory variables.
? ? function getUInt() public returns (uint) {
? ? ? ? // Declare a local variable 'localVar' of type uint and initialize it with 40.
? ? ? ? // This variable is stored in memory, meaning its value is only temporary and
? ? ? ? // will be lost once the function execution completes.
? ? ? ? uint localVar = 40;
? ? ? ? // Assign the value of 'stateVar' (which is 20) to 'localVar'.
? ? ? ? // After this line, 'localVar' will hold the value 20.
? ? ? ? localVar = stateVar;
? ? ? ? // Update the state variable 'stateVar' to a new value, 50.
? ? ? ? // This change is written to the blockchain and persists beyond this function call.
? ? ? ? stateVar = 50;
? ? ? ? // Return the value of 'localVar'.
? ? ? ? // Despite the change in 'stateVar' above, 'localVar' retains its value of 20,
? ? ? ? // demonstrating that value types are copied when assigned from storage to memory.
? ? ? ? return localVar; // returns 20
? ? }
}
//Deploy screenshot: