如何重构此代码,以便 Swift 中的变量之间仅共享某些属性
How to refactor this code so only some properties are shared between variables in 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)
你可以这样做..这只是一个粗略的想法......我不知道你正在做的系列对象和映射是什么......但是你可以有一个功能 return 系列并获取参数以创建该系列
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'}")
如果你想让它更简单......你也可以从数字创建映射字符串
谢谢
我才刚刚开始学习 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)
你可以这样做..这只是一个粗略的想法......我不知道你正在做的系列对象和映射是什么......但是你可以有一个功能 return 系列并获取参数以创建该系列
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'}")
如果你想让它更简单......你也可以从数字创建映射字符串
谢谢