我正在尝试使用另一个文件(tokenTypes.ml)中的类型:
keydown()
我正在尝试在另一个文件(词法分析器)中使用它,第一种情况效果很好:
sounds()
我可以使用定义的每种令牌类型,但是当我尝试创建类型令牌的新实例时,编译器会说:
构造函数Negation不属于TokenTypes.token类型
所以我必须使用ocamlopt -c tokenTypes.ml创建一个模块,然后在open的代码中使用它,如下所示:
pygame.init()
time.sleep(10)
def sounds():
#some action
def keydown()...
sounds()
有没有不使用该模块的方法?我想退出开放部分,只使用源代码,而不使用模块。
Help pls:c
答案 0 :(得分:0)
OCaml顶层(和utop)具有包含文件的功能:
$ cat m.ml
type abc = A | B | C
$ ocaml
OCaml version 4.06.1
# #use "m.ml";;
type abc = A | B | C
# let x = A;;
val x : abc = A
#
但是,这只是顶层和utop的功能。这不是OCaml语言的功能:
$ cat c.ml
#use "m.ml"
let x = A
$
$ ocamlopt -c c.ml
File "c.ml", line 1, characters 0-1:
Error: Syntax error
您需要使用模块来完成所需的操作。当您习惯使用模块时,它们真的很棒:-)