Scala StringContext类

StringContext

Scala中的stringContext类用于支持字符串插值。该类通过可序列化扩展了产品。并具有线性超类型Serializablejava.io.SerializableProductEqualsAnyRefAny

该类具有以下支持字符串插值的成员:

  1. 格式化的字符串插值器:macro def f[A >: Any] (argument : A*) : String

  2. 原始字符串插值器: def raw(argument: Any*) : String

  3. 简单字符串插值器: 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 +“中发布。并根据参数打印结果。

2)原始字符串内插器

它用于将给定的参数(变量)插入字符串中定义的位置。

语法:

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”。+薪水+“。。然后根据参数打印输出。

3)简单的字符串内插器

此方法用于将给定参数添加到给定字符串中的位置。

语法:

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}

最后一个表达式将被求解并计算出计算值。