【问题标题】:C# To F# for funC# 到 F# 的乐趣
【发布时间】:2013-10-01 04:33:46
【问题描述】:

我有这个 c# 类,我想在 f# 上实现它

    using System;
    using AIInterface;
    using Boards;

    namespace TTTAiCSharpAlphaBate
    {
        public class AI : IAI
        {
            private int symbol;
            Board cBoard;
            int aiLevel = 1;
            string IAI.GetAIName()
            {
                return "C#AlphaBetaAi";
            }

            string IAI.GetAIVersion()
            {
                return "1.0.0";
            }

            void IAI.SetAI(Boards.Board board, int level, int symbol)
            {
                cBoard = board;
                this.symbol = symbol;
                aiLevel = level;

            }

            int[] IAI.GetLevel()
            {
                return new int[1] { 3 };
            }

            int IAI.AIMove()
            {
                throw new NotImplementedException();
            }
        }
    }

到目前为止,我已经走到了这一步

    #if Board
    #r @"c:\..\bin\Debug\Boards.dll"
    #r @"c:\..\bin\Debug\AIInterface.dll"
    #endif
    module TTTAiFSharpAlphaBeta
    open AIInterface
    open Boards
    type AI()= 
            interface IAI with
                member this.SetAI (board: Board ,level:int, symbol:int)  =

[此处出错]表达式中出现意外的关键字“成员”

                    member this.cboard = board
                    member this.level = level
                    member this.symbol = symbol

[此处错误] 不完整的结构化构造在或之前 定义中的这一点。预期结构不完整 在此点或其他标记处或之前构造。

【问题讨论】:

  • 据推测,这表明研究工作很少。

标签: c# class f# implementation


【解决方案1】:

您需要为变量声明一个后备存储,就像在 C# 中一样。类似的东西

type AI()= 
        let mutable cboard = (*Something*)
        let mutable level = 0
        let mutable symbol = 0
        interface IAI with
            member this.SetAI (_board ,_level, _symbol)  =
                cboard <- _board
                level  <- _level
                symbol <- _symbol

【讨论】:

    【解决方案2】:
        #if Board
        #r @"L:\..\bin\Debug\Boards.dll"
        #r @"L:\..\bin\Debug\AIInterface.dll"
        #endif
        module TTTAiFSharpAlphaBeta
        open AIInterface
        open Boards
        type AI()= 
                let mutable cboard =new Board()
                let mutable level = 0
                let mutable symbol = 0
                interface IAI with
                    member this.SetAI (board: Board ,_level, _symbol)  =
                         cboard <- board
                         level  <- _level
                         symbol <- _symbol
                    member this.GetAIName()="F#DumbAssAI"
                    member this.GetAIVersion()="0.0.1"
                    member this.GetLevel()= [| 10 |];
                    member this.AIMove()=1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2013-11-26
      • 1970-01-01
      • 2012-02-02
      • 2015-04-13
      相关资源
      最近更新 更多