Как использовать определенный тип внутри класса как val в Ocaml? - PullRequest
0 голосов
/ 28 мая 2019

Я пишу класс, который хранит массив определенных типов. У меня проблема - я думаю, - с синтаксисом моего кода. Я хочу получить определенный тип внутри массива, но мой код продолжает выдавать ошибку.

Я уже создал класс, запишите нужный мне массив. я уже пытался написать это этими способами;


[|(Rook, Black, (Alive of (A, 1)))]
[|(Rook, Black, (Alive of A, 1))]
[|(Rook, Black, Alive of (A,1))]
[|(Rook, Black, Alive of A,1)]
[|(Rook, Black, (A,1))

но, к сожалению, он показывает мой массив как chess_piece * chess_colour * (chess_letter * int) или выдает ошибку работы.

это мой определенный тип

type chess_letter = A | B | C | D | E | F | G | H
and chess_piece = King | Queen | Rook | Bishop | Knight | Pawn
and chess_colour = Black | White 
and chess_position = Alive of chess_letter * int | Dead

массив должен включать [|(chess_piece, chess_colour, chess_position)|]

1 Ответ

3 голосов
/ 29 мая 2019

Синтаксис для построения значения варианта Alive:

Alive (A, 1)

of используется только в определении типа. И не имеет значения, находится ли он внутри или снаружи массива.

Кроме того, ни один из ваших массивов не является синтаксически правильным. Первые четыре пропускают | перед завершающим ], а последние пропускают оба.

...