swift 如何使元组中的一个变量为常量,另一个变量为变量?

siv3szwd  于 11个月前  发布在  Swift
关注(0)|答案(2)|浏览(118)

我有一个元组作为函数的返回值。如下所示

guard var (index, player) = self.getFielderSelected(coordinate: viewFielder.center) else { return }

字符串
但只有玩家被修改。所以我得到一个警告“变量'index'从未变异;考虑改变为'let'常量”。但如果我让它让我不能修改玩家。有没有办法让'index' let和'player' var。

nxagd54h

nxagd54h1#

消除警告的一种方法是显式声明一个变量,以便在guard语句中保存结果

guard var tuple: (index: Int, player: Player) = self.getFielderSelected(coordinate: viewFielder.center) else { return }

字符串
然后使用这个变量

tuple.player = ...


这将删除警告,因为变量tuple已修改。

ep6jt1vc

ep6jt1vc2#

有一个使用模式匹配的解决方案。它看起来比原始变体更糟糕,但比元组变量的变体清晰得多。

guard case .some((let index, var player)) = self.getFielderSelected(coordinate: viewFielder.center) else { return }

字符串

相关问题