首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >F#中的内插字符串

F#中的内插字符串
EN

Stack Overflow用户
提问于 2020-02-07 20:57:15
回答 3查看 2.7K关注 0票数 7

我试图在F#中使用Entity内插SQL查询函数,它需要一个FormattableString。然而,令我惊讶的是,它并没有发挥作用,因为我无法找到将常规F#字符串转换为该类型的方法。我想,在C#中只做你做的事情就行了,但它不起作用。

代码语言:javascript
复制
let fromDbUser (u : Entity.User) = 
    {
        name = u.Name
        age = u.Age
        phone = u.Phone
    }

let mname = "Foo" 

let ctx = new Entity.DatabaseContext()
ctx.User.FromSqlInterpolated($"Select * FROM User Where name = {mname};") 
|> Seq.map(fromDbUser)
|> printfn "%A"

运行该代码块将产生编译错误:

此令牌保留给以后使用。

我一直试图谷歌周围,但我没有找到任何办法,使这个工作,任何帮助将是最感谢的!

EN

回答 3

Stack Overflow用户

发布于 2020-02-07 21:49:16

当问到这一点时,F#没有字符串内插。

然而,今天,它有一个RFC,它被合并到在F# 5.0中中,允许在F#中插入字符串。

此错误是因为$符号被保留 (用于编写时的6 years+ ),并且在添加字符串时可能会用于字符串内插。

票数 11
EN

Stack Overflow用户

发布于 2020-02-08 12:20:22

正如Dave所指出的,插值尚未实现。但是对于绝对需要FormattableStringIFormattable的方法,可以使用FormattableStringFactory.Create

代码语言:javascript
复制
let query (sql: FormattableString)  = 
    printfn "%s" (sql.ToString(null, null))

let mname = "Foo"         
let fstr = FormattableStringFactory.Create("Select * FROM User Where name = {0};", mname)

query fstr
票数 4
EN

Stack Overflow用户

发布于 2020-11-17 04:36:44

它可以从F# 5.0中获得。

代码语言:javascript
复制
> let mname = "Foo" ;;
val mname : string = "Foo"

> let str = $"Select * FROM User Where name = {mname};" ;;
val str : string = "Select * FROM User Where name = Foo;"

看看这个。https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-50#string-interpolation

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60120969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档