📜  斯卡拉 |字符串上下文

📅  最后修改于: 2022-05-13 01:54:49.049000             🧑  作者: Mango

斯卡拉 |字符串上下文

StringContext是一个用于字符串插值的类,它允许最终用户在处理后的字符串字面量中插入变量引用,而无需任何中介。默认情况下,此类提供 raw、s 和 f 方法作为插值器。这里的线性超类型是SerializableJava.io.Serializable ProductEqualsAnyRef和 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) + "."

    其中,变量articlesname被它们的值替换。

  • 创建我们自己的插值器:为了提供我们自己的字符串插值器,我们需要生成一个隐式类,它将一个方法附加到 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是这里使用的函数,用于反转给定的字符串。