小编Tom*_*ski的帖子

在android项目中引用F#代码

我正在做一个项目,我应该编写一个使用f#代码的代码库的android应用程序.这样做我遇到了一些关于在我的android项目中引用这个f#代码的问题.

我一直在谷歌搜索,它告诉我f#代码必须在Android项目引用的PCL项目中.我已经完成了这个,但是android项目仍然无法识别在其他项目中声明的名称空间和文件.

我有一个名称空间NimGame.Core,我的大多数.fs文件都位于该名称空间中.我的事件队列模块的下图显示了一个示例,该模块明确位于NimGame.Core中.在我的参考文献中也可以看到我在我的android项目(NimGame)中引用了PCL项目(​​NimGameCore). fsharp代码示例

但是,当我尝试在我的c#代码中使用fsharp文件时,它不会显示出来. 例题

有什么可以导致这个的任何建议?

c# f# android monodevelop xamarin-studio

8
推荐指数
1
解决办法
178
查看次数

如何使用显式类型参数实例化通用记录?

我想在实例化通用记录时显式提供类型参数.换句话说,给定一个RecordType<'T1, 'T2, 'T3>,我想创建一个RecordType<'T1, 'T2, 'T3>具有一些固定的实例'T1,'T2'T3通过指定那些通用参数.有没有办法在F#中做到这一点?

我看到三个有用的案例:

  1. 当具有多个具有相同名称的泛型类型时实例化记录

    假设我们有以下记录定义:

    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)

generics f# algebraic-data-types

4
推荐指数
1
解决办法
1267
查看次数

Task.Delay(-1)有任何用例吗?

我想知道是否有任何用例Task.Delay(-1)Task.Delay(TimeSpan.FromMilliseconds(-1)).根据各自的文档,该方法创建在完成之前无限期等待的任务.我知道这await Task.Delay(...)不会阻塞线程也不会消耗太多资源,但是当浪费一些资源实际上很有用时,我想不出任何情况.

我的问题具体是关于Task.Deley()没有取消令牌的重载 - 包含取消令牌的重载可能会更有用,因为等待期可以被中断.

我是否错过了无限期等待任务的一些用例?它们只存在于方法重载之间的一致性吗?

.net c# vb.net task-parallel-library async-await

3
推荐指数
1
解决办法
1304
查看次数