gpt4 book ai didi

swift - 我在 Swift 中正确使用结构和协议(protocol)吗?

转载 作者:行者123 更新时间:2023-11-30 12:28:50 24 4
gpt4 key购买 nike

POI代表以下代码中的兴趣点。

我试图区分有兴趣点的路线。路线可以是东/西行路线或北/南行路线。

我有一个方法可以确定路线是东/西行还是北/南行:

func getRouteDirection() -> DirectionForRoute{...}

根据此方法中确定的方向,该方法构造一个要返回的 DirectionForRoute 对象。该对象具有以下定义:

protocol Couplable{}

struct DirectionForRoute{

var routeDirection: String
var POIs: Couplable

init(routeDirection: String, POIs: Couplable) {
self.routeDirection = routeDirection
self.POIs = POIs
}

}

routeDirection 变量是不言自明的,它基本上采用两个可能值之一:“EAST/WEST”“NORTH/SOUTH”.

然而,POI 变量有点复杂。根据路线的方向,我希望为 POIs 变量分配两种可能的结构之一:

struct EastWestBoundPOIs: Couplable {
var eastBoundPOIs: [POI]
var westBoundPOIs: [POI]

init(eastBoundPOIs: [POI], westBoundPOIs: [POI]) {
self.eastBoundPOIs = eastBoundPOIs
self.westBoundPOIs = westBoundPOIs
}
}

struct NorthSouthBoundPOIs: Couplable {
var northBoundPOIs: [POI]
var southBoundPOIs: [POI]

init(northBoundStops: [POI], southBoundStops: [POI]) {
self.northBoundPOIs = northBoundPOIs
self.southBoundPOIs = southBoundPOIs
}
}

getRouteDirection() 方法返回 DirectionForRoute 类型的值时,我无法访问分配给 POI 的最后两个结构的内部变量> 变量,因为它的类型是Couplable

我的问题是,我是否正确使用结构来实现我想要做的事情?有更好的方法吗?

附注如果可能的话,我想尽量避免强制转换。

最佳答案

我不明白你为什么不写一些更简单、更接近我们人类直觉的东西:

enum Direction {
case northSouth
case eastWest
}

enum Side {
case left
case right
}

struct POI {
let side : Side
}

struct Route {
let pois : [POI]
let direction : Direction
}

您现在只需为“左”和“右”的含义制定一个约定即可。假设它们是根据方向名称中的第一个方向来计算的。现在,给定一条路线,计算哪些 POI 位于我们正在行驶的路边是很简单的。

关于swift - 我在 Swift 中正确使用结构和协议(protocol)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43839146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com