斯卡拉 |字符串上下文
StringContext是一个用于字符串插值的类,它允许最终用户在处理后的字符串字面量中插入变量引用,而无需任何中介。默认情况下,此类提供 raw、s 和 f 方法作为插值器。这里的线性超类型是Serializable 、 Java.io.Serializable 、 Product 、 Equals 、 AnyRef和 Any 。
- 使用可用的 s 方法作为插值器的示例。
例子 :Scala
// 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) } }
Scala
// 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") } }
输出 :I have written 32 articles on GeeksforGeeks.
在这里,StringContext.s 方法用于提取常量部分,翻译包含的转义序列并将它们与所述表达式参数的值相加。
此处的输出返回如下:"I have written " + (articles) + " articles on " + (name) + "."
其中,变量articles和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是这里使用的函数,用于反转给定的字符串。