Solidity-라이브러리

라이브러리는 계약과 유사하지만 주로 재사용을 목적으로합니다. 라이브러리에는 다른 계약에서 호출 할 수있는 함수가 포함되어 있습니다. Solidity에는 라이브러리 사용에 대한 특정 제한이 있습니다. 다음은 Solidity Library의 주요 특징입니다.

  • 라이브러리 함수는 상태를 수정하지 않으면 직접 호출 할 수 있습니다. 즉, pure 또는 view 함수는 라이브러리 외부에서만 호출 할 수 있습니다.

  • 라이브러리는 상태 비 저장으로 간주되므로 삭제할 수 없습니다.

  • 라이브러리는 상태 변수를 가질 수 없습니다.

  • 라이브러리는 어떤 요소도 상속 할 수 없습니다.

  • 라이브러리는 상속 될 수 없습니다.

Solidity에서 라이브러리가 작동하는 방식을 이해하려면 다음 코드를 시도하십시오.

pragma solidity ^0.5.0;

library Search {
   function indexOf(uint[] storage self, uint value) public view returns (uint) {
      for (uint i = 0; i < self.length; i++) if (self[i] == value) return i;
      return uint(-1);
   }
}
contract Test {
   uint[] data;
   constructor() public {
      data.push(1);
      data.push(2);
      data.push(3);
      data.push(4);
      data.push(5);
   }
   function isValuePresent() external view returns(uint){
      uint value = 4;
      
      //search if value is present in the array using Library function
      uint index = Search.indexOf(data, value);
      return index;
   }
}

Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 .

Note − 배포 버튼을 클릭하기 전에 드롭 다운에서 테스트를 선택합니다.

산출

0: uint256: 3

사용

지침 using A for B; 라이브러리 A의 라이브러리 함수를 지정된 유형 B에 연결하는 데 사용할 수 있습니다. 이러한 함수는 호출자 유형을 첫 번째 매개 변수로 사용합니다 (self를 사용하여 식별 됨).

Solidity에서 라이브러리가 작동하는 방식을 이해하려면 다음 코드를 시도하십시오.

pragma solidity ^0.5.0;

library Search {
   function indexOf(uint[] storage self, uint value) public view returns (uint) {
      for (uint i = 0; i < self.length; i++)if (self[i] == value) return i;
      return uint(-1);
   }
}
contract Test {
   using Search for uint[];
   uint[] data;
   constructor() public {
      data.push(1);
      data.push(2);
      data.push(3);
      data.push(4);
      data.push(5);
   }
   function isValuePresent() external view returns(uint){
      uint value = 4;      
      
      //Now data is representing the Library
      uint index = data.indexOf(value);
      return index;
   }
}

Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 .

Note − 배포 버튼을 클릭하기 전에 드롭 다운에서 테스트를 선택합니다.

산출

0: uint256: 3