Library

圖書館的使用是繼承的嗎?

  • July 10, 2021

當基類使用庫時,派生類是否也使用相同的庫?

例如:

contract A {
   using SafeMath for uint256;
   ...
}
contract B is A {
   //is code here using SafeMath for uint256? 
}

不。

在 Solidity 0.7.0 及更高版本中,using ... for不再繼承 的效果。

引用 0.7.0更新日誌

using A for B僅影響提及它的契約。以前,效果是繼承的。現在,您必須在所有使用該功能的派生合約中重複 using 語句。

你說的對

pragma solidity ^0.4.24;

library Bytes32 {
   function toString(bytes32) public pure returns (string) {
       return "1";
   }
}

contract Parent {
   using Bytes32 for bytes32;

   function bar() public pure returns(string) {
       return bytes32(0).toString();              // returns "1"
   }
}

contract Child is Parent {
   function foo() public pure returns(string) {
       return bytes32(0).toString();              // returns "1"
   }
}

引用自:https://ethereum.stackexchange.com/questions/61376