Я пишу код в Python (интерпретировать язык) в течение некоторого времени, и, как и ожидалось, неосознанно, получил привычную писать интерпретировать код и ленивую оценку Python. Например, следующий код работает в Python:
if(1 == 2): print(a)
Неважно, если переменная А
был объявлен или нет, код работает, потому что Python никогда не выполняет оператор печати до тех пор, пока Если
условие верно.
С другой стороны, когда вы пытаетесь сделать это в скомпилированном языке, например, NIM, он не удается, потому что, как и ожидалось от компилятора, он оценивает все, что может во время компиляции. Поэтому я получаю ошибку:
if(1 == 2): echo a #ERROR: undeclared identifier: 'a'
Вышеуказанный пример кажется чрезвычайно простым, но вы можете в конечном итоге с таком видом кузницы в любом месте, как будто я написал следующий код в NIM:
type htag* = object text: string level: int name: string atag* = object text: string link: string name: string proc renderTag(tag: object): string = echo tag if(tag.name == "h"): return "" & tag.text & " " elif(tag.name == "a"): return "" else: return "nothing"
Здесь, если я объявляю один вид объекта, я получу Недослуженное поле
Ошибка с другой.
Оригинал: “https://dev.to/sigmapie8/compiled-vs-interpreted-a-code-example-3bak”