Назначение функции с названием контракта?

Какова цель функции WithdrawalContract в этом случае? Если becomeRichest делать то же самое, но с определенным условием и добавлять ожидающий вывод средств к pendingWithdrawals .

фрагмент кода

Ответы (1)

Это функция конструктора. Он выполняется только один раз, то есть во время создания / развертывания контракта.

Здесь, в этом случае, при создании / развертывании контракта он устанавливает самого richest из тех, кто развертывает контракт, а наиболее mostSent - значение, отправленное во время развертывания.

Имя контракта используется в качестве функции конструктора только в более ранних выпусках. Поскольку здесь имя контракта - WithdrawalContract а конструктор - WithdrawalContract() как версия говорит о solidity ^0.4.11 . Теперь - последняя solidity ^.0.4.24 - solidity ^.0.4.24 - это устарело и использует функцию constructor() .

Вы можете прочитать документацию здесь для последней версии.

Когда контракт создается, его конструктор (функция, объявленная с ключевым словом constructor) выполняется один раз.

А в документации здесь для версии 0.4.11 описан ваш случай,

Контракты могут быть созданы «извне» или из контрактов солидности. Когда контракт создается, его конструктор (функция с тем же именем, что и контракт) выполняется один раз.

Это изменение было введено в версии 0.4.22 - согласно примечаниям к выпуску здесь ,

Конструкторы теперь должны быть определены с помощью constructor(uint arg1, uint arg2) { ... } чтобы выделить их и избежать ошибок при переименовании контрактов, но не их конструкторов.

Это автоматически звонки? Почему? Это не конструктор. Поправьте меня, если я ошибаюсь, пожалуйста.
да, он автоматически вызывается при развертывании контракта и является конструктором. Вы читали мои цитаты из документации?
Ой, извини. Я не заметил, что контракт имеет то же имя, что и функция.