如何在 Scala 中检查 return 值类型

how to check return value type in scala

我是一个刚开始学习scala的人。

请问如何查看函数return的值类型?

例如:

def decode(list :List[(Int, String)]):List[String] = {

  //val result = List[String]()
  //list.map(l => outputCharWithTime(l._1,l._2,Nil))
  //result
  excuteDecode(list,List[String]())

  def excuteDecode(list:List[(Int,String)],result:List[String]):List[String] = list match {
    case Nil => Nil
    case x::Nil=>outputCharWithTime(x._1,x._2,result)
    case x::y =>excuteDecode(y,outputCharWithTime(x._1,x._2,result))
  }

  def outputCharWithTime(times:Int,str:String , result :List[String]):List[String]={
    times match{
      case 0 => result
      case x => outputCharWithTime(times-1,str,str::result)
    }
  }

}

在此代码中,所有函数 return 类型都设置为 List[String],还为 excuteDecode() 函数创建了一个空的 List[String] 参数。

但是我得到一个编译错误:

错误:(128, 5) 类型不匹配; 发现:单位 必需:列表[字符串] }

任何人都可以告诉我为什么存在问题以及如何自己检查实际的 return 类型?

语句的顺序在这里很重要。

def decode(list :List[(Int, String)]):List[String] = {

  def excuteDecode(list:List[(Int,String)],result:List[String]):List[String] = list match {
    case Nil => Nil
    case x::Nil=>outputCharWithTime(x._1,x._2,result)
    case x::y =>excuteDecode(y,outputCharWithTime(x._1,x._2,result))
  }

  def outputCharWithTime(times:Int,str:String , result :List[String]):List[String]={
    times match{
      case 0 => result
      case x => outputCharWithTime(times-1,str,str::result)
    }
  }

  excuteDecode(list,List[String]())  // Moved here
}

在 Scala 中,块中的最后一个表达式定义了整个块的内容 returns; def 等语句被定义为生成 Unit (()).