2017-01-02 4 views
0
class Main { 
    function void main() { 
    var String foo; 
    let foo = "bar"; 

    if (foo == "bar") { 
     do Output.printString("true"); 
    } 
    else { 
     do Output.printString("false"); 
    } 

    return; 
    } 
} 

Я получаю ошибку: Expected - or ~ or (in termNand тетрис (Jack): Простой, если условное равенство тестирования дает эту ошибку - "Ожидаемое - или ~ или (в перспективе"

Полный выход:

.
code/nand2tetris » tools/JackCompiler.sh projects/09/Test 
Compiling /Users/adamzerner/code/nand2tetris/projects/09/Test 
In Main.jack (line 6): In subroutine main: Expected - or ~ or (in term 
code/nand2tetris » 

что означает ошибку?

ответ

0

вопрос заключается в том, что я использовал == вместо =. В Джеке, равенство проверяются для использования единых равных, а не двойное или тройное (двойное/тройное равное обычно на других языках).

См. Пункт 7 маркировки в слайде 22 документа Chapter 9 PDF, в котором говорится, что сравнение равенства выполняется с помощью одного равенства.

См. SquareGame.jack строка 40 в программном обеспечении курса для примера.

Следующий код компилируется без ошибок. Это не дает ожидаемого результата, но причина этого - отдельная тема.

class Main { 
    function void main() { 
    var String foo; 
    let foo = "bar"; 

    if (foo = "bar") { 
     do Output.printString("true"); 
    } 
    else { 
     do Output.printString("false"); 
    } 

    return; 
    } 
}