oop - 有人可以指出 F# 中的多范式(对象功能)编程示例吗?

标签 oop f# functional-programming

有人可以指出 F# 中的多范式(对象功能)编程示例吗?

我专门寻找结合了面向对象和函数式编程的示例。有很多关于 F# 如何成为混合语言的讨论,但我无法找到演示多范式编程示例的示例。

谢谢

最佳答案

我用 F# 做了一个小的(600 行)俄罗斯方 block 克隆,它是使用 XNA 面向对象的。代码很旧(使用#light),不是你见过的最漂亮的代码,但它绝对是 OOP 和函数式的混合体。它由十个类(class)组成。我认为我没有传递任何一流的函数,但它是 programming the small 中 F# 功能强大的一个很好的例子.

  • MyGame - 继承XNA主游戏类,是程序的入口点。
  • Board - 跟踪不再移动和水平线完成的部分。
  • UI - UI 只有两种状态(播放和主菜单)由 bool stateMenu 处理
  • Tetris - 处理游戏状态。游戏结束和碎片碰撞。
  • Piece - 定义不同的俄罗斯方 block 形状及其运动和绘图。
  • Player - 处理用户输入。
  • Shape - 映射到图元的基本图形对象。
  • Primative - 包装顶点原始类型。

  • 我做了一个粗略的类图来帮助。如果您对此有任何疑问,请随时在评论部分提出。

    alt text

    关于oop - 有人可以指出 F# 中的多范式(对象功能)编程示例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114437/

    相关文章:

    f# - FSharp.Data 缺少方法异常

    javascript - 嵌套的纯函数还是纯函数吗?

    ruby - 在 Ruby 中传递任意数量的 lambda(或 proc)

    c++ - 我应该对只有 2 个项目的列表使用迭代器吗?

    java - C++:按值传递对象的原因

    java - OOP 设计 - 创建策略/模式

    c# - 控制台应用程序中的 Application.Current "null"

    f# - 解释 F# 中的 ' 符号

    functional-programming - 如何将函数应用于变体?

    matlab - 通过将方法的名称和输入传递给函数/方法来处理 Matlab 中未定义的方法