gpt4 book ai didi

scala - 如何检查scala中的返回值类型

转载 作者:行者123 更新时间:2023-12-04 17:54:35 24 4
gpt4 key购买 nike

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

请问如何查看函数返回值类型?

例如:

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)
}
}

}

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

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

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

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

最佳答案

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

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 中, block 中的最后一个表达式定义了整个 block 返回的内容;诸如 def 之类的语句被定义为生成一个 Unit (())。

关于scala - 如何检查scala中的返回值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39804537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com