功能定义包含单位F#

tjw*_*tjw 2 f# function

我是f#编程的新手,我正在定义一些要使用的辅助函数.以下是其中两个:

    let GetPieceAt piece playerType file rank = { 
        piece = {piece = piece; playerType = playerType}  ; 
            place = { file= file; rank = rank} 
            }

    let GetPieceOnRank piece  rank playerType files () = 
        [for f in files -> GetPieceAt piece playerType f rank]
Run Code Online (Sandbox Code Playgroud)

第一个函数的类型正确:piece - > playerType - > file - > rank - > PieceAt

但是,第二个函数有:piece - > rank - > playerType - > seq - > unit - > PieceAt list

这个单位来自哪里?我调用它的另一个函数是获取单位 - >单位... - > {正确的返回值},这就是错误.

我究竟做错了什么?

Cha*_*ert 6

unit在F#中(),您的GetPieceOnRank定义中的空括号表示.

与C#不同,函数不需要调用括号.也许这些括号的放置是一个错误,因为它们不是必需的,只是删除它们仍然允许代码编译.

let GetPieceOnRank piece  rank playerType files = 
    [for f in files -> GetPieceAt piece playerType f rank]
Run Code Online (Sandbox Code Playgroud)