Scala StringContext
StringContext是一个用于字符串插值的类,它允许终端用户在处理过的String字段中插入变量引用,而无需任何中介。该类默认提供raw、s和f方法作为插值器。这里的线性超类型是Serializable、java.io.Serializable、Product、Equals、AnyRef和Any。
- 一个使用可用的s方法作为插值器的例子。
示例 :
// Scala program of the
// StringContext
// Creating object
object Main
{
// Main method
def main(args: Array[String])
{
// Assigning values
val name = "GeeksforGeeks"
val articles = 32
// Applying StringContext with
// s-method
val result = StringContext("I have written ",
" articles on ", ".").s(articles, name)
// Displays output
println(result)
}
}
输出 :
have written 32 articles on GeeksforGeeks.
在这里,StringContext.s方法被用来提取常量部分,翻译包含的转义序列,并将它们与所述表达式参数的值相加。
这里的输出像下面一样被返回。
"I have written " + (articles) + " articles on " + (name) + "."
其中,变量article和name被替换成它们的值。
- 创建我们自己的插值器:为了提供我们自己的字符串插值器,我们需要产生一个隐含的类,将一个方法附加到StringContext类。
示例 :
// Scala program of StringContext
// for creating our own string
// interpolator
// Creating object
object Main
{
// Main method
def main(args: Array[String])
{
// Using implicit class with
// StringContext
implicit class Reverse (val x : StringContext)
{
// Defining a method
def revrs (args : Any*) : String =
{
// Applying s-method
val result = x.s(args : _*)
// Applying reverse method
result.reverse
}
}
// Assigning values
val value = "GeeksforGeeks"
// Displays reverse of the
// stated string
println (revrs"$value")
}
}
输出 :
skeeGrofskeeG
在这里,定义的方法revrs将其每个参数传递给s方法,然后打印出所述字符串的反向。
注意:reverse是一个函数,在这里用来反转给定的字符串。
极客教程