Scala StringContext介绍和详细用法

2021年3月17日18:13:48 发表评论 882 次浏览

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方法, 然后输出所述字符串的反面。

注意 :

逆转

是此处用来反转给定字符串的函数。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: