📜  斯卡拉 |重复方法参数

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

斯卡拉 |重复方法参数

在 Scala 中,支持重复方法参数,这在我们不知道方法需要的参数数量时很有帮助。 Scala 的这个属性用于将无限参数传递给定义的方法。
要点:

  • 具有重复参数的方法应该具有相同类型的每个参数。
  • 重复参数始终是定义的方法的最后一个参数。
  • 我们定义的方法,只能有一个参数为重复参数

例子:

// Scala program of repeated 
// parameters
  
// Creating object
object repeated
{
  
    // Main method
    def main(args: Array[String])
    {
  
        // Creating a method with
        // repeated parameters
        def add(x: Int*)
        : Int =
        {
  
            // Applying 'fold' method to 
            // perform binary operation
            x.fold(0)(_+_)
      
        }
  
        // Displays Addition
        println(add(2, 3, 5, 9, 6, 10, 11, 12))
    }
}
输出:
58

为了添加任意数量的额外参数,我们需要在所使用的参数类型后面加上*标记。
重复参数的更多示例:

  • 可以在重复参数方法中传递一个数组。
    例子:
    // Scala program of repeated 
    // parameters
      
    // Creating object
    object arr
    {
      
        // Main method
        def main(args: Array[String])
        {
      
            // Creating a method with
            // repeated parameters
            def mul(x: Int*)
            : Int =
            {
      
                // Applying 'product' method to 
                // perform multiplication
                x.product
          
            }
      
            // Displays product
            println(mul(Array(7, 3, 2, 10): _*))
        }
    }
    
    输出:
    420
    

    为了在定义的方法中传递一个数组,我们需要在传递数组中的值之后放置一个冒号,即_*

  • 显示重复参数始终是所定义方法的最后一个参数的示例。
    例子:
    // Scala program of repeated 
    // parameters
      
    // Creating object
    object str
    {
      
        // Main method
        def main(args: Array[String])
        {
      
            // Creating a method with
            // repeated parameters
            def show(x: String, y: Any*) =
            {
          
                // using 'mkString' method to
                // convert a collection to a
                // string with a separator
                "%s is a %s".format(x, y.mkString("_"))
            }
      
            // Displays string 
            println(show("GeeksforGeeks", "Computer",
                                "Sciecne", "Portal"))
        }
    }
    
    输出:
    GeeksforGeeks is a Computer_Sciecne_Portal
    

    在这里, format用于格式化字符串。