// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
contract WHILE {
uint STATE=1;
function while_1(uint _n) public returns(uint, uint) {
uint a;
while(_n > a) {
STATE *= 2;
a++;
}
return (STATE,a);
}
// 짝수만 넣기
uint[] numbers;
function while_2(uint _n) public returns(uint[] memory) {
while(numbers.length<_n) {
numbers.push((numbers.length+1)*2);
}
return numbers;
}
// 자릿수 구하기
function while_3(uint _n) public pure returns(uint) {
uint a;
while(_n > 0) {
_n /= 10;
a++;
}
return a;
}
}
contract Review {
uint a; -> 상태변수
function number(uint _a) public pure returns(uint) {
uint _b; -> 지역변수
}
}
contract Review {
uint a;
//원하는 값을 넣어주려면
function setA(uint _a) public {
a = _a;
}
//상태변수 a에다가 내가 더한 값을 알려주는 함수
//상태변수 값 가져올 때 view
function add2(uint _a) public view returns(uint) {
return a + _a;
// 인풋값 2개 uint _a,_b
// 상태변수 볼 필요없고 지역변수만으로 가능할 때 pure
function add(uint _a, uint _b) public pure returns(uint) {
return _a + _b;
}
//a의 b승을 반환하는 함수
function powerB(uint _b) public view returns(uint) {
return a**_b;
}
//
function mul(uint _a, uint _b) public pure returns(uint) {
return _a*_b;
}
}
상태변수를 변경 시키면 view, pure 아무 것도 쓰지 않는다.