Уважаемые, я новичок в 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;
}
}
Это происходит, когда компилятор еще не загружен. Вы должны подождать некоторое время
Для оператора вроде 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]
Лаури Пелтонен
Прашант Прабхакар Сингх
function
ошибка в getName(). Исправьте это.Дуриан Джейкин