F# 我如何制作一个棋盘来进行游戏?

F# 我如何制作一个棋盘来进行游戏?,f#,F#,我想做一个小的模拟,但我不知道如何制作模拟板。 我想做一个模拟,有两种动物,捕食者和猎物。 模拟应给出一个输入n,它决定了电路板的大小。所以它是nxn个正方形。 我曾尝试使用2D阵列,但我不完全理解它,当我尝试打印我的电路板时,它没有显示出来 我有一个带有此代码的.fs文件 module preditorprey type board(n:int) = let _rows = n let _columns = n let _board = Array2D.create

我想做一个小的模拟,但我不知道如何制作模拟板。 我想做一个模拟,有两种动物,捕食者和猎物。 模拟应给出一个输入n,它决定了电路板的大小。所以它是nxn个正方形。 我曾尝试使用2D阵列,但我不完全理解它,当我尝试打印我的电路板时,它没有显示出来

我有一个带有此代码的.fs文件

module preditorprey

type board(n:int) =
    let _rows = n
    let _columns = n
    let _board = Array2D.create _rows _columns (None)
然后我有一个带有这个的.fsx文件

open preditorprey 

let boards = preditorprey.board(8)

printfn "%A" boards
然而,当我运行代码时,它只是返回

preditorprey+board
为什么要这样做?我如何让它打印出一个有n*n个正方形的电路板

为什么会这样

您创建了一个类
board
,并定义了一些。您感到惊讶的是,
printfn“%A”
没有返回
类型中的数据。由于Board类型中的字段是私有的,没有函数可以访问它们,因此这是不可能的

printfn“%A”
具有特殊的代码,可以以合理智能的方式打印许多F#结构。对于类,它将使用默认打印类名的
ToString()
方法

我如何让它打印出一个有n*n个正方形的电路板

对于一些快速和肮脏的东西(即,不指定打印电路板是什么意思,而只是依靠一种温和的方法和许多默认值),您可以执行以下操作之一。请注意传统的命名:Pascal大小写表示类型,caml大小写表示字段。还要注意的是,None上缺少类型注释

type NeedsToBeSpecified=类结束
让boardA(n:int)=Array2D.create n(无:需要指定选项)
设a=a(8)
printfn“%A”A
类型BoardB(n:int)=
let board=Array2D.create n n(无:需要指定选项)
成员t.董事会=董事会
设b=b(8)
打印fn“%A”b.电路板
类型BoardC(n:int)=
let board=Array2D.create n n(无:需要指定选项)
override u.ToString()=sprintf“%A”板
设z=c(8)
printfn“%A”z