scala中:_*的使用

Posted shichunlei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala中:_*的使用相关的知识,希望对你有一定的参考价值。

1.计算1到4的和

 1 def main(args: Array[String]): Unit = {
 2 
 3        val total = sum(1,2,3,4)
 4         println(total)
 5 
 6     }
 7 
 8     def sum(args: Int*) = {
 9         var result = 0
10         for (arg <- args) result += arg
11         result
12     }

2.使用:_*

 def main(args: Array[String]): Unit = {

       val total = sum(1 to 5)
        println(total)


    }

    def sum(args: Int*) = {
        var result = 0
        for (arg <- args) result += arg
        result
    }
报错是:
Error:(4, 26) type mismatch;
 found   : scala.collection.immutable.Range.Inclusive
 required: Int
       val total = sum(1 to 5)

在上述代码中,可以使用:_*
 1   def main(args: Array[String]): Unit = {
 2 
 3        val total = sum(1 to 4:_*)
 4         println(total)
 5 
 6 
 7     }
 8     //变长参数
 9     def sum(args: Int*) = {
10         var result = 0
11         for (arg <- args) result += arg
12         result
13     }

3. :_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 4:_*)就是将1 to 5当作参数序列处理。

 

以上是关于scala中:_*的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Scala 中使用 java.String.format?

VSCode 配置 用户自定义代码片段 自定义自动代码补充

为什么Scala是可扩展的?

Scala模式匹配错误,“错误的简单模式:错误使用_ *(不允许序列模式)”

详解 Scala 模式匹配

初学scala4——trait混入