从Scala中的函数返回初始化列表

从Scala中的函数返回初始化列表,scala,list,Scala,List,如何声明由函数的返回列表初始化的列表变量 我想要一个List[Any],我们称之为newList,分配给某个函数返回的值,比如makeList(),该函数返回一个List[Any] 比如: 它给出了一个错误:“Any类型的表达式不符合预期的类型列表[Any]” 然后我想索引到newList的第一个元素,比如:newList(0) 我尝试了val newList:List[Any]=makeList(arg1,arg2) 但是我仍然在newList(0) 我已经确认,makeList返回一个列表[

如何声明由函数的返回列表初始化的列表变量

我想要一个
List[Any]
,我们称之为
newList
,分配给某个函数返回的值,比如
makeList()
,该函数返回一个
List[Any]

比如:

它给出了一个错误:“Any类型的表达式不符合预期的类型列表[Any]”

然后我想索引到newList的第一个元素,比如:
newList(0)

我尝试了
val newList:List[Any]=makeList(arg1,arg2)
但是我仍然在
newList(0)

我已经确认,
makeList
返回一个列表[任何]


最后一个错误来自将
newList(0)
作为函数中的最后一行,因此,最后一个问题是:返回列表元素[Any]的函数的返回类型应该是什么?

指定的方式是正确的

例如

scala> def makeList = List("scala", "clj", 1, 100.5)
makeList: List[Any]

scala> val newList = makeList
newList: List[Any] = List(scala, clj, 1, 100.5)

scala> newList = List("I want to change the reference of list")
<console>:12: error: reassignment to val
       newList = List("I want to change the reference of list")
               ^

是的,应该行。你犯了什么错误?但是请注意,
var
(而不是
val
)和
List[Any]
(而不是正确键入的东西)都是代码气味。代码气味?我收到一条错误消息“Any类型的表达式不符合预期的类型List[Any]”
List[Any]
是一件坏事。这意味着编译器已经失去了对列表元素类型的跟踪。这让事情变得更加困难。你仍然没有提供足够的细节让任何人重新创建你描述的错误。到目前为止发布的所有内容都应该可以正常工作。(这是一种错误做法,但没有错误的原因。)是的,<代码>列表[ON] <代码>的每一个元素都是类型<代码>任何。在这一点上,你已经离开了斯卡拉的力量领域,可能会考虑切换到Python。当我用返回列表的函数赋值VaR时,我得到一个错误:“任何类型的表达式都不符合预期类型列表[ON]。签名是:def scalarsToList(scalars:Map[String,JValue],definitions:List[(String,ScalarDefinition)]):List[Any]={…},因此返回一个List[Any]。此方法有效/正在通过测试。签名在我看来不错。即使
val newList:Any=makeList
也应该可以工作,请查看它失败的行号以删除初始错误,谢谢。但是现在尝试访问下一行的newList中的第一个元素,如newList(0)给出了一个错误:“应用程序不接受参数”@user7804781,如果您使用一个完整的不起作用的示例更新原始问题,而不是在注释中使用各行来来回,可能会有所帮助
scala> def makeList = List("scala", "clj", 1, 100.5)
makeList: List[Any]

scala> val newList = makeList
newList: List[Any] = List(scala, clj, 1, 100.5)

scala> newList = List("I want to change the reference of list")
<console>:12: error: reassignment to val
       newList = List("I want to change the reference of list")
               ^
scala> def makeList() : List[Any] = List("scala", "clj", 1, 100.5)
makeList: ()List[Any]

scala> var newList = makeList
newList: List[Any] = List(scala, clj, 1, 100.5)

scala> newList = List("I changed the reference of list")
newList: List[Any] = List(I changed the reference of list)