如何重构这些代码,使Swift中的变量之间只共享一些属性



我刚开始学习swift,想创建一个显示一些数据的简单图表。

我正在使用AnyChart库创建一个折线图,我正在绘制一系列的折线图。我注意到我几乎重复了所有的属性。我怎样才能使下面的代码不那么枯燥。

我正在使用AnyChart库创建一个折线图,我正在绘制一系列的折线图。我注意到我几乎重复了所有的属性,唯一改变的是初始变量名。

如何使生成的代码更少,并将变量的名称考虑在内(系列1、系列2(?

let series1Mapping = set.mapAs(mapping: "{x: 'x', value: 'value'}")        
let series2Mapping = set.mapAs(mapping: "{x: 'x', value: 'value2'}")
let series1 = chart.line(data: series1Mapping)
let series2 = chart.line(data: series2Mapping)

series1.name(name: data.seriesNames[0])
series1.hovered().markers().enabled(enabled: true)
series1.hovered().markers()
.type(type: anychart.enums.MarkerType.CIRCLE)
.size(size: 4)
series1.tooltip()
.position(position: data.position)
.anchor(anchor: anychart.enums.Anchor.LEFT_CENTER)
.offsetX(offset: 5)
.offsetY(offset: 5)
series2.name(name: data.seriesNames[1])
series2.hovered().markers().enabled(enabled: true)
series2.hovered().markers()
.type(type: anychart.enums.MarkerType.CIRCLE)
.size(size: 4)
series2.tooltip()
.position(position: data.position)
.anchor(anchor: anychart.enums.Anchor.LEFT_CENTER)
.offsetX(offset: 5)
.offsetY(offset: 5)

你可以这样做。。这只是一个粗略的想法。。。我不知道你正在做的Series对象和映射是什么。。。但是,您可以有一个函数返回序列并获取参数来创建该序列

func getSeries(number:Int, mapping:String) -> Series {
let series = chart.line(data: set.mapAs(mapping: mapping))
series.name(name: data.seriesNames[number])
series.hovered().markers().enabled(enabled: true)
series.hovered().markers()
.type(type: anychart.enums.MarkerType.CIRCLE)
.size(size: 4)
series.tooltip()
.position(position: data.position)
.anchor(anchor: anychart.enums.Anchor.LEFT_CENTER)
.offsetX(offset: 5)
.offsetY(offset: 5)
return series
}

然后创建系列

let series1 = getSeries(number:0 , mapping:"{x: 'x', value: 'value'}")
let series2 = getSeries(number:1 , mapping:"{x: 'x', value: 'value2'}")

如果你想让它更简单。。。您可以根据数字以及创建映射字符串

感谢

相关内容

  • 没有找到相关文章

最新更新