Во всех уроках, которые я смотрю, никто не указывает public, но remix представляет предупреждения о том, что видимость функции не была указана, и предполагается public.
Поскольку я не люблю предупреждения, если это возможно, я указываю public при необходимости, но мне интересно, должна ли сама функция конструктора быть public или private. Мне кажется, что он должен быть частным, так как он автоматически вызывается самим договором о создании, или мои рассуждения ошибочны?
Когда вы пытаетесь скомпилировать контракт с private
конструктором, например, этот:
pragma solidity ^ 0.4 . 15 ; contract PrivateConstructor {
string public title ;
function PrivateConstructor () private { title = "Private Constructor" ;
}
}
Вы получаете эту ошибку:
TypeError: Constructor must be public or internal.
Похоже, контрактор может быть только public
или internal
.
Подробнее здесь Видимость и добытчики
Конструктор может быть внутренним или общедоступным; однако если конструктор имеет модификатор payable, тогда конструктор может быть только открытым.
Что касается внутренней видимости, это позволяет абстрактному контракту иметь конструктор.
Нико
Брахер