Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 错误:类型积分采用类型参数。。。。。。斯卡拉_Scala - Fatal编程技术网

Scala 错误:类型积分采用类型参数。。。。。。斯卡拉

Scala 错误:类型积分采用类型参数。。。。。。斯卡拉,scala,Scala,我在scala中编写了一个包含许多函数的代码,但是当我运行该代码时,在一个函数中出现了3个错误: 1) 类型积分采用类型参数 定义日期(开始日期:字符串,结束日期:字符串,持续时间:整数,最终列表:列表[列表[列表[字符串])]):列表[列表[列表[列表[列表[字符串]]]= 2) 类型列表接受类型参数 失败的\u列表\u,日期::=ListList[列表] 3) 类型列表接受类型参数 失败的\u列表\u,日期::=ListList[列表] 下面是代码的相关摘录 def **joda_to_st

我在scala中编写了一个包含许多函数的代码,但是当我运行该代码时,在一个函数中出现了3个错误:

1) 类型积分采用类型参数 定义日期(开始日期:字符串,结束日期:字符串,持续时间:整数,最终列表:列表[列表[列表[字符串])]):列表[列表[列表[列表[列表[字符串]]]=

2) 类型列表接受类型参数 失败的\u列表\u,日期::=ListList[列表]

3) 类型列表接受类型参数 失败的\u列表\u,日期::=ListList[列表]

下面是代码的相关摘录

def **joda_to_string(time:org.joda.time.DateTime):String**=
{
  val datestring= time.getYearOfEra.toString+"-"+time.getMonthOfYear.toString+"-"+  time.getDayOfMonth.toString
  return datestring
}

def date(start_date:String,end_date:String,**duration:Integral**,final_list:List[List[List[String]]  ]):List[List[List[List[String]]]]=
{

var failed_list_with_date=List[List[List[List[String]]]]()
var start_list=(start_date.split("-"))
var end_list=end_date.split("-")
val start_date_strip=new DateTime((start_list(0).toInt), start_list(1).toInt,   start_list(2).toInt,0,0,0,0)
val end_date_strip=new DateTime((end_list(0).toInt), end_list(1).toInt,   end_list(2).toInt,0,0,0,0)
var diff=((end_date_strip.getMillis-start_date_strip.getMillis)/3600/1000/24)
  **var a = start_date_strip
var b =a.plusDays(duration).minusDays(1)**
if (failed_list==List[List[List[String]]]()){}
  else
  {
    **failed_list_with_date::=List[List[List]](joda_to_string(b))
    failed_list_with_date::=List[List[List]](joda_to_string(a))**

我知道这看起来很混乱,我试着发布代码的必要部分,并把重要的东西放在两者之间**

哇,这是一个令人困惑的问题

让我们从重新格式化开始。还有一个样式说明,在Scala中,通常不需要使用
return
关键字。任何代码块都将返回其最后一个表达式的值。此外,Scala在使用
+
构建结果字符串时,将自动调用非字符串对象上的
toString

def joda_to_string( time: org.joda.time.DateTime ): String = {
  time.getYearOfEra.toString + "-" + time.getMonthOfYear +
    "-" + time.getDayOfMonth
}

def date( start_date: String, end_date: String, duration: Int,
          final_list: List[List[List[String]]] ): List[List[List[List[String]]]] = {

    var failed_list_with_date = List[List[List[List[String]]]]()
    var start_list = (start_date.split("-"))
    var end_list = end_date.split("-")
    val start_date_strip = new DateTime((start_list(0).toInt), start_list(1).toInt,   start_list(2).toInt,0,0,0,0)
    val end_date_strip = new DateTime((end_list(0).toInt), end_list(1).toInt,   end_list(2).toInt,0,0,0,0)
    var diff=((end_date_strip.getMillis-start_date_strip.getMillis)/3600/1000/24)
      var a = start_date_strip
    var b = a.plusDays(duration).minusDays(1)
    if (failed_list == List[List[List[String]]]()) {}
      else {
    failed_list_with_date ::= List(List(List(joda_to_string(b))))
    failed_list_with_date ::= List(List(List(joda_to_string(a))))
    }
  }
如果您知道类型参数是什么,那么错误实际上是非常直接的。第一个是
类型积分,它使用类型参数
。这是因为您使用了错误的类型。您可能指的是
Int
,这是Scala版本的
Integer

另外两个提醒您,
列表采用类型参数
。您有一个嵌套类型:
List[List[List]]
这里的内部类型是一个
列表
和。。。它需要一个类型参数。也许你的意思是
List[List[List[String]]]
?实际上,您需要在这里构造一个适当类型的列表,这就是:
list(list(list(joda_to_string(b)))
所做的

但我真的不知道,因为这是我见过的最奇怪的屁股类型

如果不想弄清楚你的代码想做什么(因为这会伤到我的头),我猜你真的应该使用一个简单的
List[String]
,每次你都应该在列表的前面加上新元素:

failed_list_with_date ::= joda_to_string(b)

第一件事是以可读的方式格式化您的问题(将准确的错误消息放入源代码中;缩进和换行)