首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ocaml + oasis +定制模块,如何编译

ocaml + oasis +定制模块,如何编译
EN

Stack Overflow用户
提问于 2016-10-29 14:18:23
回答 1查看 134关注 0票数 0

所以我有以下文件:

_oasis:

代码语言:javascript
复制
OASISFormat: 0.4
Name:        PongBattleServer
Version:     0.1.0
Synopsis:    Server for handling multi-player pong games
Authors:     Jason Miesionczek
License:     MIT
Plugins:     META (0.4), DevFiles (0.4)
Executable pongserver
  Path:       src
  BuildTools: ocamlbuild
  MainIs:     main.ml

main.ml:

代码语言:javascript
复制
open Players;;

let () =
    let mgr = new player_manager

players.ml:

代码语言:javascript
复制
type player =
    {
        name: string;
        score: int;
    }

class player_manager =
    object (self)
        val mutable player_list = ( [] : player list)
        method add p =
            player_list <- p :: player_list
    end;;

当我运行make时,会得到以下错误:

代码语言:javascript
复制
ocaml setup.ml -build 
/home/araxia/.opam/system/bin/ocamlfind ocamldep -modules src/main.ml > src/main.ml.depends
+ /home/araxia/.opam/system/bin/ocamlfind ocamldep -modules src/main.ml > src/main.ml.depends
File "src/main.ml", line 4, characters 32-32:
Error: Syntax error
Command exited with code 2.
E: Failure("Command ''/usr/bin/ocamlbuild' src/main.byte -tag debug' terminated with error code 10")
make: *** [build] Error 1
Makefile:7: recipe for target 'build' failed

我刚开始接触绿洲等,我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-29 18:16:49

这和绿洲无关,只是当你写的时候

代码语言:javascript
复制
let () =
  let mgr = new player_manager

OCaml需要一个in关键字,因为要么let引入一个全局变量,要么它引入一个局部变量,然后您将需要一个let var = expr in expr,其他什么都不需要。

所以,代之以

代码语言:javascript
复制
let () =
  let mgr = new player_manager in ()

就目前而言,因为您没有使用mgr做任何事情。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40319995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档