gpt4 book ai didi

swift - 为什么我不能在 Swift 中对 double 元组使用 min()?

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

var coordinatesDouble = (Double(latitudeTextField.text!), Double(longitudeTextField.text!))

var boundingBoxLat: (Double, Double)
var boundingBoxLon: (Double, Double)

boundingBoxLat = (coordinatesDouble.0! - Constants.Flickr.SearchBBoxHalfHeight, coordinatesDouble.1! + Constants.Flickr.SearchBBoxHalfHeight)
boundingBoxLon = (coordinatesDouble.1! - Constants.Flickr.SearchBBoxHalfWidth, coordinatesDouble.1! + Constants.Flickr.SearchBBoxHalfWidth)

if min(boundingBoxLat) < -90.0 {

我试图在 if 语句中使用 min(),但出现错误:

"Cannot invoke 'min' with an argument list of type (Double, Double)"

我认为这正是该功能的用途。我错过了什么吗?

每个 double 的等式是将一个 double 减去或添加到另一个 double,从而得到一个 double。然后 if 语句应该确定元组中的最低值是否低于 -90.0。

最佳答案

我错过了什么吗?

是的。

请检查: SE-0029 Remove implicit tuple splat behavior from function applications

在包含此 SE-0029 的 Swift 版本中,Swift 不接受两个成员的元组作为具有两个参数的函数的实际参数。 p>

(min 有另一个重载,但在这里无关紧要。)

正如 JAL 所说,你需要传递两个参数来调用 min(_:_:):

min(boundingBoxLat.0, boundingBoxLat.1)

一些补充。

我想知道这一行是否真的是你想要的:

boundingBoxLat = (coordinatesDouble.0! - Constants.Flickr.SearchBBoxHalfHeight, coordinatesDouble.1! + Constants.Flickr.SearchBBoxHalfHeight)

应该是这样吧? (请找出后半部分的细微差别。):

boundingBoxLat = (coordinatesDouble.0! - Constants.Flickr.SearchBBoxHalfHeight, coordinatesDouble.0! + Constants.Flickr.SearchBBoxHalfHeight)

不过我的猜测对不对并不重要。只是您应该知道,这种过多使用元组的代码可读性较差。

我建议您定义自己的结构来表示boundingBox:

struct CoordinateBox {
var minLatitude: Double
var maxLatitude: Double
var minLongitude: Double
var maxLongitude: Double

init(latitude: Double, longitude: Double, height: Double, width: Double) {
assert(height > 0.0)
assert(width > 0.0)
minLatitude = latitude - height
maxLatitude = latitude + height
minLongitude = longitude - width
maxLongitude = longitude + width
}
}

let boundingBox = CoordinateBox(latitude: Double(latitudeTextField.text ?? "") ?? 0,
longitude: Double(longitudeTextField.text ?? "") ?? 0,
height: Constants.Flickr.SearchBBoxHalfHeight,
width: Constants.Flickr.SearchBBoxHalfWidth)

if boundingBox.minLatitude < -90.0 {
//...
}

您永远不会与 .0.1 混淆。

关于swift - 为什么我不能在 Swift 中对 double 元组使用 min()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45703493/

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