我是否在Swift中正确使用了结构和协议?
POI代表以下代码中的兴趣点 我正试图区分有兴趣点的路线。路线可以是东/西向路线或北/南向路线 我有一个确定路线是东/西向还是北/南向的方法:我是否在Swift中正确使用了结构和协议?,swift,Swift,POI代表以下代码中的兴趣点 我正试图区分有兴趣点的路线。路线可以是东/西向路线或北/南向路线 我有一个确定路线是东/西向还是北/南向的方法: func getRouteDirection()->路由{…}的方向 基于此方法中确定的方向,该方法构造一个要返回的DirectionForRoute对象。此对象具有以下定义: protocol Couplable{} struct DirectionForRoute{ var routeDirection: String var P
func getRouteDirection()->路由{…}的方向
基于此方法中确定的方向,该方法构造一个要返回的DirectionForRoute
对象。此对象具有以下定义:
protocol Couplable{}
struct DirectionForRoute{
var routeDirection: String
var POIs: Couplable
init(routeDirection: String, POIs: Couplable) {
self.routeDirection = routeDirection
self.POIs = POIs
}
}
routeddirection
变量是不言自明的,它基本上采用两个可能值中的一个,即“东/西”
或“北/南”
然而,POIs
变量要复杂一些。根据路线的方向,我希望将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
的值时,我无法访问分配给POIs
变量的最后两个结构的内部变量,因为它属于可耦合的类型
我的问题是,我是否正确地使用结构来实现我想要做的事情?有更好的方法吗
注:如果可能的话,我想尽量避免选角。我不明白你为什么不写一些更简单、更接近人类直觉的东西:
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位于我们行驶的道路一侧是很简单的。这里有一个想法。它比您的解决方案更简单,但没有那么好的命名约定。然而,它可能会给您一些想法,并允许您重构以满足您的确切需求
首先,不要使用表示方向的字符串
,而是使用枚举
enum Direction {
case northSouth
case eastWest
}
接下来,您的DirectionForRoute
命名为Route
会更有意义,它有一个方向和一些兴趣点
struct Route {
var direction: Direction
var northOrEastPOIs: [POI]
var southOrWestPOIs: [POI]
}
这真的是你的代码吗?行self.routeDirection=routeDirection
没有意义,因为没有名为routeDirection
的传入参数。在我的机器上,这是一个编译错误:“错误:将属性分配给自身”。@matt可能只是一个输入错误<代码>路由绑定
用于路由定向
混淆。这是一个输入错误。我修好了@matt@nathan当然这是一个打字错误,但OP的工作是显示有意义的代码。酷。-我得承认我不知道你想干什么。对于我来说,你需要一个完整的结构来判断一条路线是东西走向还是南北走向的想法似乎有些疯狂,我不明白一个方向怎么会有泊松,为什么会有泊松。我一点也不明白为什么你需要两种POI。你的类型应该像真实世界的东西。在现实生活中,我们不是这样想的。在现实生活中,路线有方向,也有POI。完成。怎么了?