在 Solidity 中,library 是一种特殊类型的合约,用于存放可复用的代码片段。当定义 library 中的方法时,可以使用不同的可见性修饰符,如 public、internal、external 和 private。
在 library 中,不推荐使用 external 和 private 修饰符的原因如下:
- External 不适用于 Library 方法:
external修饰符用于指定函数只能通过外部调用,但是library方法本身不能被外部合约调用。library主要用于在内部合约中复用代码,因此external在library中没有实际意义。 - Private 限制了代码复用性:
private修饰符将方法标记为私有的,只能在当前合约内部访问。使用private修饰符会限制代码的复用性,因为无法从其他合约中调用library的私有方法。通常情况下,library旨在为其他合约提供可复用的公共方法。
因此,在编写 Solidity library 方法时,推荐使用 public 或 internal 修饰符。public 可以确保方法在其他合约和外部调用时可见,而 internal 可以确保方法只能在当前合约及其派生合约中访问。