Type.GenericTypeArguments
属性和Type.GetGenericArguments()
方法有什么区别?他们总是回归同样的事情,还是有不同的情况?
F#2.0发行版有一个为WindowsPhone 7.1/Silverlight 4编译的FSharp.Core版本,但F#3.0没有编译,便携版本只支持Silverlight 5或Windows Phone 8.有人能够编译FSharp版本.针对Silverlight 4或Windows Phone 7.1的F#3.0核心源代码?需要什么定义?
编辑:
在fsharp编译器github repo上,有一个名为portable-net4 + sl4 + wp71 + win8的目标,但实际上是可移植类库Profile47,据说它只支持.NET 4.5,Silverlight 5.0和Windows Store应用程序.它与VS2012安装的相同.如果您尝试将其与WP 7.1项目一起使用,它将在运行时失败,抱怨缺少IStructuralEquatable.它应该真的命名为portable-net45 + sl5 + win8.proj文件中也有一个wp7目标,但它目前还没有编译
假设asyncSendMsg
没有返回任何内容,我想在另一个异步块内启动它,但不等待它完成,这是否有任何区别:
async {
//(...async stuff...)
for msg in msgs do
asyncSendMsg msg |> Async.Start
//(...more async stuff...)
}
Run Code Online (Sandbox Code Playgroud)
和
async {
//(...async stuff...)
for msg in msgs do
let! child = asyncSendMsg msg |> Async.StartChild
()
//(...more async stuff...)
}
Run Code Online (Sandbox Code Playgroud) 在我的Windows Phone 8应用程序中,应用程序栏通常如下所示:
但是对于我的用户之一某些原因与1020它看起来像这样:(这是一个NOKIA RM-877_nam_att_205 3.3.0.2 3051.40000.1346.0001与操作系统版本8.0.10517.0)
(WP8模拟器看起来也像第二个)
任何人都知道为什么会这样,我该如何解决?
在Drag&Drop中,如果我想自定义游标,我可以订阅GiveFeedback
拖动源并设置e.UseDefaultCursors = false
,并渲染我想要的内容.
但这只有在拖动源是我的应用程序时才有效.例如,如果我想在从资源管理器中拖动文件时也这样做,我无法订阅该事件,因为我只能访问放置目标而不能访问拖动源.
有没有其他方法来禁用内置游标和复制和链接标志,以便我可以在这种情况下渲染我自己的?
我正在尝试从字符串到Enum定义一个通用转换运算符,我想像这样使用它:
let day = asEnum<DayOfWeek>("Monday")
Run Code Online (Sandbox Code Playgroud)
但是这个实现:
let asEnum<'a, 'b when 'a: (new : unit -> 'a) and 'a : struct and 'a :> ValueType and 'a : enum<'b>> text =
match Enum.TryParse<'a>(text) with
| true, value -> Some value
| false, _ -> None
Run Code Online (Sandbox Code Playgroud)
我只能这样使用它:
let day = asEnum<DayOfWeek,_>("Monday")
Run Code Online (Sandbox Code Playgroud)
或这个:
let day:DayOfWeek option = asEnum("Monday")
Run Code Online (Sandbox Code Playgroud)
如果我'a : enum<'b>
从类型约束中完全省略了,我可以随心所欲地使用它,但是如果有人没有指定默认的类型int
,我真的不喜欢它,我更喜欢它给出一个编译我指定约束时的时间错误
也许有任何技巧只需指定一个类型参数并让另一个参与?有任何想法吗?
如果我们有
module M
type private A = B | C
(...)
Run Code Online (Sandbox Code Playgroud)
私有修饰符意味着A只能在模块M中使用.但在这种情况下:
namespace N
type private A = B | C
(...)
Run Code Online (Sandbox Code Playgroud)
这个私有修饰符会产生什么影响?CLR命名空间有私有成员是没有意义的,因为命名空间可以随意扩展,那么私有修饰符会有任何影响吗?
也许monad允许链接一组所有可能失败的运算符(通过返回None),并且Some result
如果每个子操作成功,或者None
如果有任何失败,则返回结束.这是一个小例子:
type MaybeBuilder() =
member this.Return(x) =
Some x
member this.Bind(m, f) =
match m with
| Some x -> f x
| None -> None
let maybe = MaybeBuilder()
let list = [1;2;3;4]
// evaluates to Some 3
maybe {
let! x1 = List.tryFind ((=) 1) list
let! x2 = List.tryFind ((=) 2) list
return x1 + x2
}
// evaluates to None
maybe {
let! x1 = List.tryFind ((=) 1) list
let! x2 …
Run Code Online (Sandbox Code Playgroud) 我使用 Json.Net 序列化字典类型的字典,当我向字典添加整数或布尔值时,反序列化时我会得到整数和布尔值。现在我试图将我的代码更改为使用 ServiceStack.Text,因为代码的其他部分存在日期序列化的问题,但现在我在反序列化后将布尔值和整数作为字符串。有没有办法与 Json.Net 具有相同的行为?
这是重现它的代码:https: //gist.github.com/1608951 Test_JsonNet 通过,但 Test_ServiceStack_Text_TypeSerializer 和 Test_ServiceStack_Text_JsonSerializer 都失败
有什么影响
<AllowCrossTargeting>true</AllowCrossTargeting>
Run Code Online (Sandbox Code Playgroud)
在fsproj文件中?我找不到任何关于它的文档
f# ×7
asynchronous ×1
c# ×1
cursor ×1
enums ×1
f#-3.0 ×1
monads ×1
reflection ×1
servicestack ×1
wpf ×1