我正在做一个项目,我应该编写一个使用f#代码的代码库的android应用程序.这样做我遇到了一些关于在我的android项目中引用这个f#代码的问题.
我一直在谷歌搜索,它告诉我f#代码必须在Android项目引用的PCL项目中.我已经完成了这个,但是android项目仍然无法识别在其他项目中声明的名称空间和文件.
我有一个名称空间NimGame.Core
,我的大多数.fs文件都位于该名称空间中.我的事件队列模块的下图显示了一个示例,该模块明确位于NimGame.Core中.在我的参考文献中也可以看到我在我的android项目(NimGame)中引用了PCL项目(NimGameCore).
但是,当我尝试在我的c#代码中使用fsharp文件时,它不会显示出来.
有什么可以导致这个的任何建议?
我想在实例化通用记录时显式提供类型参数.换句话说,给定一个RecordType<'T1, 'T2, 'T3>
,我想创建一个RecordType<'T1, 'T2, 'T3>
具有一些固定的实例'T1
,'T2
并'T3
通过指定那些通用参数.有没有办法在F#中做到这一点?
我看到三个有用的案例:
当具有多个具有相同名称的泛型类型时实例化记录
假设我们有以下记录定义:
type SimpleGenericRecord<'T1, 'T2> = {
f1 : 'T1 -> 'T2
}
type SimpleGenericRecord<'T> = {
f1 : 'T -> 'T
}
Run Code Online (Sandbox Code Playgroud)
我很容易构造SimpleGenericRecord<'T>
最后定义的实例:
let record = {
f1 = fun (x: int) -> 0
}
let record1 = {
SimpleGenericRecord.f1 = fun (x: int) -> 0
}
Run Code Online (Sandbox Code Playgroud)
在尝试创建SimpleGenericRecord<int, int>
给出编译错误之后:
let record2 = {
SimpleGenericRecord<int, int>.f1 = fun (x: int) …
Run Code Online (Sandbox Code Playgroud)我想知道是否有任何用例Task.Delay(-1)
或Task.Delay(TimeSpan.FromMilliseconds(-1))
.根据各自的文档,该方法创建在完成之前无限期等待的任务.我知道这await Task.Delay(...)
不会阻塞线程也不会消耗太多资源,但是当浪费一些资源实际上很有用时,我想不出任何情况.
我的问题具体是关于Task.Deley()
没有取消令牌的重载 - 包含取消令牌的重载可能会更有用,因为等待期可以被中断.
我是否错过了无限期等待任务的一些用例?它们只存在于方法重载之间的一致性吗?