Solidity에서 null이 없음
정의되지 않은 개념
undefined , null , nil , None 등의 개념은 JavaScript, Java, Python, Swift 등과 같은 언어에 존재합니다. 그러나 Solidity에는 존재하지 않습니다.Solidity에서는 대신 0 또는 기본 값 개념이라고 부를 수 있습니다. 각 값이 생성되면 메모리에 슬롯이 생기고 무언가를 포함해야 하기 때문입니다.
기본값
기본값에 대해 이야기하려면 Solidity 유형을 두 블록으로 분할해야 합니다.
string , bytes 및 배열과 같은 동적으로 크기가 조정된 유형; int , bool 및 address 와 같이 동적으로 크기가 지정되지 않은 유형. 동적 크기가 아닌 유형
동적 크기가 아닌 유형을 사용하면 게임이 매우 간단합니다. 이에 대한 기본값은 다음과 같습니다.
int 또는 uint256 기본값은 00입니다. bool는 false이다; address 유형 기본값은 제로 주소0x0000000000000000000000000000000000000000입니다. struct 를 생성하려는 경우 기본값은 모든 구성원의 기본값의 튜플입니다.enum의 경우 기본값은 첫 번째 경우입니다. 이것은 매우 생소한 접근 방식일 수 있지만 배후의 모든 enum 사례가 uint8 정수의 배열이기 때문입니다.동적으로 크기가 조정된 유형
동적으로 크기가 조정되는 유형의 경우 이야기가 다릅니다.
string의 기본값은 비어 있습니다string. bytes 기본값은 비어 있거나 바이트가 없습니다. 따라 코드
코드의 기본값을 설명하기 위해
struct enum 가 있는 Employee EmployeeType 를 생성해 보겠습니다.enum EmployeeType {
Employee,
Contractor,
PartTime
}
struct Person {
EmployeeType employeeType;
bool deleted;
string name;
uint256 yearOfBirth;
address walletAddress;
uint256[] doorAccess;
}
이제
Employee struct 의 새 인스턴스를 초기화할 수 있습니다. 멤버 값을 제공할 필요는 없지만 메모리에 할당해야 합니다.Person person;
person 값을 출력하면 각 Person struct 멤버에 대한 기본값 튜플을 얻게 됩니다.tuple(uint8,bool,string,uint256,address,uint256[]): 0,false,,0,0x0000000000000000000000000000000000000000,
null 가능성 확인
이제 우리는 기본값을 알았으므로 무언가가 "null"인지 또는 정확히 말하면 기본값이 있는지 확인할 수 있습니다.
function check() external view {
console.log(person.deleted == false);
console.log(bytes(person.name).length == 0);
console.log(person.yearOfBirth == 0);
console.log(person.walletAddress == address(0));
console.log(person.employeeType == EmployeeType.Employee);
console.log(person.doorAccess.length == 0);
}
이 기능을 실행하면 모든 검사에 대해
true를 얻습니다. 이것이 정의된 값이 없다는 것을 이해할 수 있는 방법입니다. Deleted true
Name true
Year of birth true
Wallet address true
Employee type true
Door access true
언급할 가치가 있는 것은 '문자열' 유형에 대해
bytes로 변환하고 길이를 확인했다는 것입니다. 이를 달성하는 또 다른 방법이 있지만 향후 게시물 중 하나에서 이에 대해 이야기할 것입니다.TL;DR
Solidity 프로그래밍 언어에는 Swift 및 JavaScript와 같은 많은 언어에서 흔히 볼 수 있는 null 허용 여부 기능이 없습니다. 대신 유형에는
0 에 대한 0uint 과 같은 기본값이 있습니다. 무언가가 정의되어 있는지 여부를 확인하려는 경우 유용하기 때문에 기본값을 아는 것이 중요합니다.연결
Reference
이 문제에 관하여(Solidity에서 null이 없음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fassko/absence-of-null-in-solidity-3h1i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)