Scala中的stringContext类用于支持字符串插值。该类通过可序列化扩展了产品。并具有线性超类型Serializable,java.io.Serializable,Product,Equals,AnyRef,Any。
该类具有以下支持字符串插值的成员:
格式化的字符串插值器:macro def f[A >: Any] (argument : A*) : String
原始字符串插值器: def raw(argument: Any*) : String
简单字符串插值器: def s(argument: Any* ): String
所有这三个函数都用于字符串插值。和用于在格式化的字符串之间添加变量。
让我们看一下每个插值字符串的方法。
它用于在字符串之间添加给定的参数(变量/表达式)。在指定位置。
语法:
macro def f[A >: Any] (argument : A*) : String
参数:它可以采用将在字符串中插入的任意数量的参数。$之后的变量是参数。
返回类型:返回一个字符串,该字符串是插值字符串。
示例
object MyClass { def strPrint(proglang : String , year : Int){ printf(f"$proglang was released in the year $year.\n") } def main(args: Array[String]) { strPrint("Scala", 2004) strPrint("JavaScript", 1995) } }
输出:
Scala was released in the year 2004. JavaScript was released in the year 1995.
在上面的代码中,我们创建了一个函数strPrint(),该函数接受两个参数:字符串和整数值。
并按以下方式将它们插入到字符串中:proglang +“在年份” + year +“中发布。并根据参数打印结果。
它用于将给定的参数(变量)插入字符串中定义的位置。
语法:
def raw(argument: Any*) : String
参数:它可以采用将在字符串中插入的任意数量的参数。$之后的变量是参数。
返回类型:返回一个字符串,该字符串是插值字符串。
示例
object MyClass { def RawStrInterpolator(employee : String , salary : Int){ println(StringContext(""," gets a salary of Rs.", ".").raw(employee , salary)) } def main(args: Array[String]) { RawStrInterpolator("Sudhir", 175000) RawStrInterpolator("Ramesh", 50000) } }
输出:
Sudhir gets a salary of Rs.175000. Ramesh gets a salary of Rs.50000.
在上面的代码中,我们创建了一个RawStrInterpolator()方法来演示Raw String Interpolator的功能。该方法接受两个名为employee和salary的参数,然后使用raw方法对字符串进行插值。插值字符串的输出格式为:
employee +“薪水为Rs”。+薪水+“。。然后根据参数打印输出。
此方法用于将给定参数添加到给定字符串中的位置。
语法:
def s(argument: Any*) : String
参数:它可以采用将在字符串中插入的任意数量的参数。$之后的变量是参数。
返回类型:返回一个字符串,该字符串是插值字符串。
示例
object MyClass { def simpleStrInterpolator(principal : Int , rate : Int){ println(s"The interest on $principal at the rate of $rate for 1 year is ${(principal*rate*1)/100 }") } def main(args: Array[String]) { simpleStrInterpolator(175000, 8) simpleStrInterpolator(50000, 10) } }
输出:
The interest on 175000 at the rate of 8 for 1 year is 14000 The interest on 50000 at the rate of 10 for 1 year is 5000
在上面的代码中,我们创建了一个函数simpleStrInterpolator(),该函数使用s方法对字符串进行插值。我们已经将两个参数传递给字符串,即principal和rate。插值字符串的输出格式为:
“利息” +本金+“按” +利率+“一年的利率” + {(本金*利率* 1)/ 100}
最后一个表达式将被求解并计算出计算值。