gpt4 book ai didi

arrays - Swift - 通过修剪给定父项中的子项 "owned"来过滤数组

转载 作者:行者123 更新时间:2023-11-30 12:26:15 25 4
gpt4 key购买 nike

我的关系可以描述为:

Factory -< Engine

玩家只能引用 engines他拥有的;

即:

Player: { name: "Bob", engines: [Engine]() }

我想根据某个玩家是否买得起工厂来过滤工厂;而且我还想过滤掉玩家已经拥有的所有引擎。

也就是说,

a player can only ever buy each factory once.

..

我过滤掉负担得起的工厂的代码是这样的:

  let results = factories.filter { (factory:Factory) -> Bool in
return ((factory.cost <= Int(firstPlayer.cash)) && (factory.isUnlocked))
}

我的代码用于过滤给定父工厂的玩家拥有的引擎

  let ownedEngines = player.engines.filter { (eng:Engine) -> Bool in
return ((eng.owner == player) && (eng.parent == factory))
}

但是我如何将它们结合起来说;

请给我一份我尚未拥有但我能负担得起的所有工厂的 list ?

非常感谢

<小时/>

编辑:类(class)大纲如下

class Factory {
var name: String
var cost: Int
var engines: [Engine] = [Engine]()
}

class Engine {
var name: String
weak var parent: Factory?
weak var owner: Player?
var units: Int
}

class Player {
var name: String
var cash: Int
var engines: [Engine] = [Engine]()
}

更多信息

我能描述它的最好方式是;

游戏代表了在[套牌]中收集在一起的多个工厂。每个deck里面有多张卡;这些是引擎。每个玩家不能多次购买同一工厂。

我需要引用有多少 units以及子对象的其他元数据,因此这就是为什么有 Engine实体。

因此,当玩家购买工厂时,他们实际上购买了引擎,但从未直接拥有工厂。所有引用都可以从子对象中收集。

我需要过滤掉:

  • 我的decks我能负担得起的所有工厂
  • 我已经通过引擎卡拥有的所有工厂

所以我目前就是这样做的;

// static Function in my factory model
public static func filterDecksForCash(decks: [Factory], cash:Int) -> [Factory] {
let results = decks.filter { (f:Factory) -> Bool in
return ((loco.cost <= Int(cash)) && (loco.isUnlocked))
}
return results
}


let decks = Factory.createAll()


// filter deck for cost, unlock but also all trains but also remove trains they've already purchased
var results = Factory.filterDecksForCash(decks: decks, cash: firstPlayer.cash)

for (index, factory) in results.enumerated() {
for eng in factory.engines {
if (eng.owner == firstPlayer) {
results.remove(at: index)
}
}
}

最佳答案

我决定运行一个 for 循环来删除我不想要的项目。

问题已结束。

我也在尝试与此类似的功能;

let filtered = decks.filter { (deck:EYLocomotive) -> Bool in
return ((deck.isUnlocked) && (deck.orders.count > 0))
}.map({ $0.engines.filter({ (eng:EYEngine) -> Bool in
return (eng.owner != nil)
})})

关于arrays - Swift - 通过修剪给定父项中的子项 "owned"来过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178908/

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