【问题标题】:Swift 2.0 - How to return tuple from a string inputSwift 2.0 - 如何从字符串输入返回元组
【发布时间】:2015-11-22 21:49:20
【问题描述】:

我正在学习使用树屋编写 Swift 2.0 代码。我正在尝试编写一个代码,您可以在其中输入“埃菲尔铁塔”、“大金字塔”、“悉尼歌剧院”,该函数将输出经度和纬度坐标。我无法让函数返回坐标 - 任何帮助将不胜感激!

func getTowerCoordinates (location: String) -> (lat: Double, lon: Double) {
switch location {
case "Eiffel Tower": (48.8582, 2.2945)
case "Great Pyramid": (29.9792, 31.1344)
case "Sydney Opera House": (33.8587, 151.2140)
default: (0,0)
}
return (lat, lon)

}

【问题讨论】:

    标签: tuples swift2


    【解决方案1】:

    首先,您应该创建一个可以保存数据然后返回的变量。

    func getTowerCoordinates (location: String) -> (lat: Double, lon: Double) {
        var coordinates: (lat: Double, lon: Double)
    
        switch location {
        case "Eiffel Tower":
            coordinates = (48.8582, 2.2945)
            break
        case "Great Pyramid":
            coordinates = (29.9792, 31.1344)
            break
        case "Sydney Opera House":
            coordinates = (33.8587, 151.2140)
            break
        default:
            coordinates = (0,0)
        }
    
        return coordinates
    }
    

    或更简单:

    func getTowerCoordinates (location: String) -> (lat: Double, lon: Double) {
        switch location {
        case "Eiffel Tower":
            return (48.8582, 2.2945)
        case "Great Pyramid":
            return (29.9792, 31.1344)
        case "Sydney Opera House":
            return (33.8587, 151.2140)
        default:
            return (0, 0)
        }
    }
    

    (lat: Double, lon: Double) 是函数的结果类型,您将元组的第一个元素标记为lat,第二个元素标记为lon

    之后,你可以这样写:

    let (lat, lon) = getTowerCoordinates("Eiffel Tower") 
    print(lat)
    print(lon)
    

    let coordinates = getTowerCoordinates("Eiffel Tower")
    print(coordinates.lat)
    print(coordinates.lon)
    

    这是一样的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2017-01-11
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多