-
조건문 & 반복문Block-Chain/Solidity 2023. 2. 15. 14:21
Solidity의 조건문과 반복문에 대해 정리하였습니다.
< if 조건문 >
Solidity에도 다른 언어와 마찬가지로 조건문이 있습니다.
문법은 JavaScript와 동일합니다.- 조건문 형식
if(if가 발동 되는 조건){ if 내용 } else if(else if가 발동 되는 조건){ else if 내용 } ... else{ if, else if 가 발동이 안되면 else 내용 }
Ex)
string private result = ""; function isIt5or3or1(uint256 _number) public returns(string memory){ if(_number == 5){ result = "Yes, it is 5"; return result; } else if(_number == 3){ result = "Yes, it is 3"; return result; } else if(_number == 1){ result = "Yes, it is 1"; return result; } else{ result = "No, it is not 5, 3 or 1"; return result; }
< loop 반복문 >
반복문의 종류는 총 3가지가 있습니다.
- for
- while
- do-while
문법은 JavaScript와 동일합니다.- for 반복문
for (초기값; 값이 얼마나 forloop을 돌아야하는지; forloop 한번 돌때마다 값의 변화;) { loop 내용; }
- while 반복문
초기값 while (값이 얼마나 forloop을 돌아야하는지) { loop 내용; }
- do-while 반복문
초기값 do{ loop 내용; } while (값이 얼마나 forloop을 돌아야하는지)
< continue, break >
continue와 break 키워드는 끝나지 않은 반복문의 제어를 위해 사용합니다.
- continue : 다음 반복문으로 이동
- break : 반복문을 끝냄
Ex)
contract lecture23 { event CountryIndexName(uint256 indexed _index, string _name); string[] private countryList = ["South Korea", "North Korea", "USA", "China", "Japan"]; funtion useContinue() public { for (uint256 i = 0; i < countryList.length; i++) { if (i%2 == 1) { continue; } emit CountryIndexName(i, countryList[i]); } } funtion useBreak() public { for (uint256 i = 0; i < countryList.length; i++) { if (i == 3) { break; } emit CountryIndexName(i, countryList[i]); } } }
< linear search >
배열의 값을 검색할 때 자주 사용하는 linear search 사용방법에 대해 소개합니다.
Ex)
string[] private countryList = ["South Korea", "North Korea", "USA", "China", "Japan"]; function linearSearch(string memory _search) public view returns(int256, string memory) { for (uint256 i = 0; i < countryList.length; i++) { if (keccak256(bytes(countryList[i]) == keccak256(bytes(_search)) { return (i, countryList[i]); } } return (99, "Nothing"); }
: 솔리디티 내에서 string은 직접 비교가 불가능해, 다음과 같은 과정을 거친 후 비교해줘야 함.
1. string을 bytes화
2. keccak256을 이용해 다시 해시화
'Block-Chain > Solidity' 카테고리의 다른 글
Modifier & SPDX (0) 2023.03.22 에러 핸들러 (0) 2023.03.07 Mapping & Array & struct(구조체) (0) 2023.01.16 상속 & 이벤트 (0) 2023.01.05 Instance (0) 2022.12.28