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.)