Прагма солидность не работает

введите описание изображения здесь

Уважаемые, я новичок в Ethereum, нуб-новичок. Это может разозлить многих, но я должен спросить, почему pragma solidity не работает должным образом. У меня есть бесчисленное множество примеров, когда прагма солидности ^0.4.0; работает, но почему это не работает для меня? Я попробовал это на remix.ethereum.org, компиляторе на основе браузера ethereum.

Я получаю эту ошибку, помогите пожалуйста, кто-нибудь!

browser/Untitled.sol:1:1: ParserError: Ожидаемая прагма, директива импорта или определение контракта/интерфейса/библиотеки.pragma solidity ^0.4.0;

Вот код:

pragma solidity ^0.4.0;
contract MyfirstContract{
    string private name;
    uint private age;

    function setName(string newName){
        name=newName;
    }
    fucntion getName() returns (string){
        return;

    }

}
Вы должны опубликовать свой код в виде блока кода, чтобы его можно было скопировать и опробовать. Если это изображение, никто не может его скопировать. Мое текущее предположение состоит в том, что у вас где-то там есть какой-то странный символ, который стал бы очевидным, если бы мы могли скопировать код.
Код работает нормально. Проверьте свою версию ремикса. functionошибка в getName(). Исправьте это.
Хех, упс, нубская ошибка. компилятор говорит, что он не загружен?

Ответы (3)

Это происходит, когда компилятор еще не загружен. Вы должны подождать некоторое время

Для оператора вроде pragma solidity ^0.4.11ожидание в течение некоторого времени заставит эту ошибку исчезнуть. В этом утверждении под использованием ^мы говорим использовать любой вышеприведенный компилятор 0.4.11, поэтому, если 0.4.21он загружен, он также будет работать.

Но иногда эта ошибка может остаться. Это происходит, если вы используете определенную версию компилятора, как в строке ниже:

pragma solidity 0.4.3;

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

В случае, если это не ясно.

pragma«В компьютерном программировании директива или прагма (от «прагматический») — это языковая конструкция, которая указывает, как компилятор (или другой транслятор) должен обрабатывать вводимые данные». - https://en.wikipedia.org/wiki/Директива_(программирование)

Это просто говорит о том, что он был разработан для компилятора версии 0.4.0или выше ( ^). Компилятор solcпредназначен для выдачи ошибки, если он сам несовместим, и это может быть полезной защитой, возможно предотвращая использование несовместимого или непроверенного компилятора.

Как указал @Ayushya, самому компилятору требуется несколько секунд для загрузки и инициализации. В случае несовместимого компилятора Remix позволяет разработчику выбирать из длинного списка доступных компиляторов, поэтому вам не нужно довольствоваться компилятором по умолчанию.

введите описание изображения здесь

Возможно pragma, он говорит вам, какую версию компилятора вам нужно загрузить для успешной работы с исходным файлом. Это потенциально важно при работе с протестированным кодом, поскольку критические изменения могут быть внесены после публикации. Слова время от времени устаревают.

Главный вывод: Remix позволяет загружать любой компилятор, который вам нужен/нужен, и есть из чего выбрать. pragmaтам, чтобы предотвратить царапины на голове. Он предполагает, с какой версией работал разработчик и, предположительно, тестировал код.

Надеюсь, это поможет.

Прежде всего. Я скопировал и вставил именно то, что вы разместили здесь, в своем коде. Вы неправильно написали «функция» в строке 9. После исправления это отлично компилируется для меня. Я использую Remix в Firefox. Посмотрите, не вызывает ли выбранный вами браузер проблему, если вы по-прежнему получаете сообщение об ошибке после исправления слова с ошибкой. В противном случае попробуйте поставить лицензионную версию SPDX. Кроме этого, я бы сказал, что ваша проблема - слово с ошибкой. [![компилируется нормально][2]][2]

введите описание изображения здесь