StringContext是用于字符串插值, 这允许最终用户在处理的String文字中插入变量引用, 而无需任何中介。此类默认提供原始, s和f方法作为插值器。这里的线性超类型是可序列化, java.io.Serializable, 产品, 等于, 任何参考和任何.
使用可用的s方法作为内插器的示例。
范例:
// Scala program of the
// StringContext
// Creating object
object Main
{
// Main method
def main(args : Array[String])
{
// Assigning values
val name = "lsbin"
val articles = 32
// Applying StringContext with
// s-method
val result = StringContext( "I have written " , " articles on " , "." ).s(articles, name)
// Displays output
println(result)
}
}
输出:
I have written 32 articles on lsbin.
在这里, StringContext.s方法用于提取常量部分, 转换包含的转义序列, 并将它们与声明的表达式参数的值相加。
返回的输出如下所示:
"I have written " + (articles) + " articles on " + (name) + "."
哪里, 变量文章和名称被它们的值代替。
创建我们自己的插值器:
为了提供我们自己的String插值器, 我们需要产生一个隐式类, 该类会将一个方法附加到StringContext类。
范例:
// Scala program of StringContext
// for creating our own string
// interpolator
// Creating object
object Main
{
// Main method
def main(args : Array[String])
{
// Using impicit 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 = "lsbin"
// Displays reverse of the
// stated string
println (revrs "$value" )
}
}
输出:
skeeGrofskeeG
在这里, 定义的方法
修订版
将其每个参数传递给s方法, 然后输出所述字符串的反面。
注意 :
逆转
是此处用来反转给定字符串的函数。