F#中的模板字符串?

10 浏览
0 Comments

F#中的模板字符串?

我刚接触F#,想知道是否有类似于Python中的模板字符串的东西。这样我可以简单地做一些类似的事情:\n

    >>> d = dict(who='tim', what='car')
    >>> Template('$who likes $what').substitute(d)
    'tim likes car'

0
0 Comments

Template strings in F#?

在F#的核心库中,我不知道有任何内置的东西可以按照键值对的方式工作,但是你可以使用sprintf函数来实现类型检查的格式化字符串:

let intro = sprintf "I am %d years old. My name is %s" 35 "Sam"

0
0 Comments

F# 5中的新功能是字符串插值。在以前的F#版本中,可以使用sprintf函数来实现相同的效果。使用字符串插值可以更方便地在字符串中插入变量的值,而不需要使用格式化字符串和占位符。

在上面的例子中,我们可以看到使用字符串插值的两种方式。第一种方式是使用$符号,将变量放在大括号{}中,直接插入到字符串中。例如,我们可以使用firstName和lastName变量创建一个新的字符串,其中包含这两个变量的值。

第二种方式是在三个双引号之间使用字符串插值。在这种情况下,我们不需要使用变量,而是直接在插值中写入字符串的值。

对于旧版本的F#,我们可以使用sprintf函数来实现同样的效果。sprintf函数使用格式化字符串和占位符来插入变量的值。在上面的例子中,我们可以看到使用%s占位符来插入字符串的值。

字符串插值是F# 5中的一个新功能,它使得在字符串中插入变量的值更加方便。它可以替代以前使用sprintf函数的方式。无论是使用$符号还是sprintf函数,我们都可以轻松地在字符串中插入变量的值。

0
0 Comments

在F#中,以sprintf为例,是一种惯用的方法:

let newString = sprintf "First Name: %s Last Name: %s" "John" "Doe"

此外,还可以使用.NET的String.Format:

let newString = String.Format("First Name: {0} Last Name: {1}", "John", "Doe")

第一种方法的好处是类型安全,即不能将字符串传递给整数格式化程序(如"%d")。正如评论中的Benjol所指出的,无法将格式化字符串传递给sprintf,因为它是静态类型的。有关更多信息,请参见这里

第二种方法的好处是可以将字符串变量作为格式化字符串传递。

0