我想创建一个库,它将使用用户定义的函数创建对象,并使用另一个用户定义的函数进行修改.
我有一个OCaml背景,看到一个相当简单的方法来实现它:
//user side
type userType = { mutable time : float }
let userInitialization () = { time = 0. }
let userModification t = t.time <- t.time+1.
//my side
let algo initialization modification n =
let a = Array.init n (fun _ -> initialization ())
modification a.[0]
a
Run Code Online (Sandbox Code Playgroud)
问题是我希望从C#中轻松调用该库:将函数作为参数可能是一个坏主意.
接口和抽象类(将继承userType)似乎是通常的OO解决方案,但如果我不知道(尚未定义的)userType在我的函数内部进行初始化步骤,我就无法初始化对象.
我能想到的唯一解决方法是向用户询问他userType作为参数的实例,该实例将用于调用初始化,但这似乎非常不优雅.
有没有办法解决这个问题?
使用 F# 绘制简单图形的最简单方法是什么?
我想可视化一个动态系统(我的用例的一个简化示例是以每帧一个像素的速度从屏幕一侧到另一侧的红色方块),所以我需要一种方法来绘制简单的几何形状。
由于我会定期更新图片,因此可能需要一种避免闪烁的机制。
标准解决方案似乎是System.Drawing。我整理了一个可行的解决方案,但代码过于复杂(似乎需要System.Windows.Forms,没有直接的方法可以将图形放入 Windows 中吗?),对于简单的任务来说不是很好,这让我认为可能存在更好的工具.
我做错了什么,有没有一种简单的方法来绘制和更新图片System.Drawing?或者有没有更适合我需求的图书馆?