【发布时间】:2011-11-22 23:12:23
【问题描述】:
只是尝试做一些像这样简单的事情:
context.Users.Any(fun currentUser -> currentUser.UserName = userName)
Context 只是一个实体框架上下文。现在,当我将鼠标悬停在“currentUser”上时,它知道它是一个用户类型。但是我得到了:
根据之前的信息查找不确定类型的对象 这个程序点。在此之前可能需要类型注释 程序点来约束对象的类型。这可能允许 查找要解决。
现在我意识到我可以做到这一点:
context.Users.Any(fun (currentUser:User) -> currentUser.UserName = userName)
但这看起来很傻,因为 c# 可以很容易地推断类型:
context.Users.Any(currentUser => currentUser.UserName = userName)
完整的方法是这样的:
let FindAndRemoveUser(userName:String, context:StoryBoardContext) =
if context.Users.Any(fun currentUser-> currentUser.UserName = userName) then
let foundUser = context.Users.Where(fun innerUser -> innerUser.UserName = userName).First()
context.Users.DeleteObject(foundUser)
context.SaveAll() |> ignore
我认为 F# 应该与 C# 一样或更好地处理类型推断是错误的吗?
【问题讨论】:
标签: f# type-inference