使用 map 从坐标生成一系列 SwiftChart 对象
Using map to generate a sequence of SwiftChart objects from coordinates
我正在尝试遍历坐标数组以从每个坐标创建一个对象。坐标存储为元组 (x,y,z,label)
。
private enum University
{
case Uni0,Uni1,Uni2, Uni3
}
let models: [(x: CGFloat, y:CGFloat, r:CGFloat, type: University)] = [
(246.56, 138.98, 1,.Uni0), (218.33, 132.71, 1,.Uni0), (187.79, 127.48, 1, .Uni0), (150.63, 135.5, 1, .Uni0), (185.05, 152.57, 1, .Uni3), (213.15, 155.71, 1, .Uni1), (252.79, 158.85, 1, .Uni2), (315.77, 150.62, 1, .Uni0), (220.55, 149.57, 1, .Uni3)
产生错误的行
let xValues = models{[=11=].x}.map{ChartAxisValueInt([=11=].x,labelSettings: labelSettings)}
ChartAxisValueInt
是来自 SwiftCharts 的 class。构造函数采用 Int
和 ChartLabelSettings
的实例。
错误消息说 *map 不能用类型为 ((_) -> _ ) 的参数列表调用。
我认为 map
是合适的,因为我想通过将一个函数应用于另一个系列的每个成员来生成一个序列。
更令人困惑的是,以下来自 SwiftCharts 的示例代码不会生成该错误:
let xValues = Array(stride(from: 0, through: 450, by: 50)).map {ChartAxisValueInt([=12=], labelSettings: labelSettings)}
好像只是少了一个map()
调用,
let xValues = models{ [=10=].x }.map{ ... }
应该是
let xValues = models.map{ [=11=].x }.map{ ... }
此外,ChartAxisValueInt()
将 Int
作为第一个参数,
但是你的 x 坐标是 CGFloat
s。所以这会起作用:
let xValues = models
.map { [=12=].x }
.map { ChartAxisValueFloat([=12=], labelSettings: labelSettings) }
但是,正如@Ixx 正确注意到的那样,同样可以做更多
在单个映射中有效:
let xValues = models
.map { ChartAxisValueFloat([=13=].x, labelSettings: labelSettings) }
我正在尝试遍历坐标数组以从每个坐标创建一个对象。坐标存储为元组 (x,y,z,label)
。
private enum University
{
case Uni0,Uni1,Uni2, Uni3
}
let models: [(x: CGFloat, y:CGFloat, r:CGFloat, type: University)] = [
(246.56, 138.98, 1,.Uni0), (218.33, 132.71, 1,.Uni0), (187.79, 127.48, 1, .Uni0), (150.63, 135.5, 1, .Uni0), (185.05, 152.57, 1, .Uni3), (213.15, 155.71, 1, .Uni1), (252.79, 158.85, 1, .Uni2), (315.77, 150.62, 1, .Uni0), (220.55, 149.57, 1, .Uni3)
产生错误的行
let xValues = models{[=11=].x}.map{ChartAxisValueInt([=11=].x,labelSettings: labelSettings)}
ChartAxisValueInt
是来自 SwiftCharts 的 class。构造函数采用 Int
和 ChartLabelSettings
的实例。
错误消息说 *map 不能用类型为 ((_) -> _ ) 的参数列表调用。
我认为 map
是合适的,因为我想通过将一个函数应用于另一个系列的每个成员来生成一个序列。
更令人困惑的是,以下来自 SwiftCharts 的示例代码不会生成该错误:
let xValues = Array(stride(from: 0, through: 450, by: 50)).map {ChartAxisValueInt([=12=], labelSettings: labelSettings)}
好像只是少了一个map()
调用,
let xValues = models{ [=10=].x }.map{ ... }
应该是
let xValues = models.map{ [=11=].x }.map{ ... }
此外,ChartAxisValueInt()
将 Int
作为第一个参数,
但是你的 x 坐标是 CGFloat
s。所以这会起作用:
let xValues = models
.map { [=12=].x }
.map { ChartAxisValueFloat([=12=], labelSettings: labelSettings) }
但是,正如@Ixx 正确注意到的那样,同样可以做更多 在单个映射中有效:
let xValues = models
.map { ChartAxisValueFloat([=13=].x, labelSettings: labelSettings) }