使用scala,我尝试将多个元素连接到一个列表,如下所示
val min = func1()
val max = func1()
val interpol : List[Float] = func2()
val res : List[Float] = (min.toFloat) :: interpolated :: (max.toFloat) :: Nil
由于类型不匹配错误,此语法不起作用。我怎样才能将元素预先添加到列表中(以非常优雅的方式,即不使用列表缓冲区等)?
是的,我也试过val res : List[Float] = (min.toFloat) :: interpolated :: List(max.toFloat)
但是出现了类型不匹配错误(List[Any]
vs List[Float]
)
答案 0 :(得分:3)
Peter Neyens解决方案运行良好。 就个人而言,我更喜欢这个
min.toFloat +: interpolated :+ max.toFloat
+:
和:+
在Seq中定义,因此不仅适用于List
,也适用于Vector
答案 1 :(得分:2)
您正在将;WITH mycte
AS (SELECT Z.zipid,
B.bldgid,
(( Sqrt(Square((Z.lat - B.lat)*68.96799738887665)
+ Square((Z.long - B.long)*54.69366983621222)) )) Dist,
Row_number()
OVER (
partition BY zipid
ORDER BY ((Sqrt( Square((Z.lat - B.lat)*68.96799738887665) +
Square((
Z.long
- B.long)*54.69366983621222)))))
DistOrder
FROM Buildings_Coordinates B
CROSS JOIN Zip_Code_Coordinates Z)
UPDATE z
SET closest_buildingid = bldgid,
closest_bldgdistance = dist
FROM Zip_Code_Coordinates Z
INNER JOIN mycte C
ON Z.zipid = C.zipid
WHERE distorder = 1
添加到min.toFloat
列表中,但是您无法将结果列表添加到列表中,并且已创建的最大值(interpolated
),您将需要max.toFloat :: Nil
连接这两个列表。
:::