gpt4 book ai didi

comparison - 如何优雅地比较 Swift 中的元组?

转载 作者:IT王子 更新时间:2023-10-29 05:09:19 32 4
gpt4 key购买 nike

我确实有 2 个不同类型的元组 (Double, Double):

let tuple1: (Double, Double) = (1, 2)
let tuple2: (Double, Double) = (3, 4)

我想使用一个简单的 if 语句来比较它们的值。像这样的东西:

if (tuple1 == tuple2) {
// Do stuff
}

这会引发以下错误:

Could not find an overload for '==' that accepts the supplied arguments

我目前的解决方案是这样的功能:

func compareTuples <T: Equatable> (tuple1: (T, T), tuple2: (T, T)) -> Bool {
return (tuple1.0 == tuple2.0) && (tuple1.1 == tuple2.1)
}

我已经尝试编写一个扩展,但无法使其适用于元组。对于这个问题,你有更优雅的解决方案吗?

最佳答案

更新

作为Martin R注释中指出,现在可以将最多包含六个组件的元组与 == 进行比较。具有不同组件计数或不同组件类型的元组被视为不同类型,因此无法进行比较,但我在下面描述的简单案例的代码现在已过时。


试试这个:

func == <T:Equatable> (tuple1:(T,T),tuple2:(T,T)) -> Bool
{
return (tuple1.0 == tuple2.0) && (tuple1.1 == tuple2.1)
}

和你的一模一样,不过我叫它==。然后是这样的:

(1, 1) == (1, 1)

为真且

(1, 1) == (1, 2)

是假的

关于comparison - 如何优雅地比较 Swift 中的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24487519/

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