pragma solidity ^0.8.9;
// SPDX-License-Identifier: MIT
contract DowhileLoop {
// Define a mapping to store block numbers with a unique identifier.
mapping(uint => uint) blockNumber;
// Counter variable to keep track of the number of elements in the mapping.
uint counter;
// Event to log block numbers.
event uintNumber(uint);
// Function to set a new block number in the mapping.
function setNumber() public {
// Store the current block number in the mapping and increment the counter.
blockNumber[counter++] = block.number;
}
// Function to retrieve and emit all stored block numbers.
function getNumbers() public {
// Initialize a variable to iterate through the mapping.
uint i = 0;
// Start a do-while loop to emit block numbers while 'i' is less than 'counter'.
do {
// Emit the block number stored at index 'i'.
emit uintNumber(blockNumber[i]);
// Increment 'i' to move to the next block number in the mapping.
i = i + 1;
} while (i < counter); // Continue looping until 'i' is less than 'counter'.
}
}
//Deploy: