Ключевое internal
слово в определении функции, например:
function doSomeThing(uint _param) internal {...}
работает аналогично назначению метода как частного на других языках и, таким образом, делает функцию вызываемой только из контракта?
Модификатор internal
можно лучше сравнить с protected
объектно-ориентированными языками программирования. Внутренние функции контракта C видны коду, работающему по текущему адресу (т. е. текущему экземпляру контракта), а также контрактам, производным от C.
Обратите внимание, что благодаря архитектуре EVM видимость может быть строго обеспечена на машинном уровне: невозможно вызвать функцию по другому адресу, если она явно не доступна (т. е. вы не можете просто «привести» контракт к другой вид). Также нельзя вызывать внутренние или приватные функции одного и того же типа контракта по другому адресу.
Да. Модификатор internal
означает, что функция может быть вызвана только внутри самого контракта и любых производных контрактов.
private
функции недоступны в производных контрактах.
Из документов :
внутренний:
К этим функциям и переменным состояния можно получить доступ только внутри (т.е. из текущего контракта или контрактов, производных от него), без использования this.
частный:
Частные функции и переменные состояния видны только для контракта, в котором они определены, а не для производных контрактов.
Джефф Коулман
крестит