使用返回double值的用户输入访问Dictionary

时间:2015-10-08 04:45:07

标签: swift dictionary input

我希望用户输入一个String来访问字典中的一个键,然后返回它的耦合值。我确定这不是我的代码唯一的错误,但试图看看我是否有正确的想法,并希望有一些额外的方向:

主要的两个问题是编写正确的语法来连接函数调用getInput()内的用户输入func planetAndTime()(String)该函数将我的字典作为参数传递。

我的另一个问题是返回我的函数的double值。 - > Double`

func getInput() -> String{
      let kb: NSFileHandle = NSFileHandle.fileHandleWithStandardInput()
      let inputData: NSData = kb.availableData
      let strData = NSString(data: inputData, encoding:NSUTF8StringEncoding) as! String
return strData
}

/////////

let nameOfPlanetsAndTime:[String:Double] = ["Mercury":0.00000816,
   "Venus":0.00044, "Mars":0.0000239, "Jupiter":0.00062, "Saturn":0.000204,
   "Uranus":0.000289, "Neptune":0.000459, "Pluto":0.000794, 
   "Center of the Milky Way":25000.000000, "Earth's Cousin":1400.000000]

print("Choose planet")


func planetAndTime(nameOfPlanetsAndTime: [String:Double], userLocation:String) ->Double{
    let userLocation = getInput()
    if (nameOfPlanetsAndTime[userLocation] < 0){
        print("Not a Valid Location, Please Try Again")}
    else{
    nameOfPlanetsAndTime[userLocation]!
        print(nameOfPlanetsAndTime)
   }
}

1 个答案:

答案 0 :(得分:1)

由于对Swift语言的工作方式存在误解,您的代码存在一些问题,因此我建议您阅读官方Swift文档,了解Swift功能的一些优秀示例。为了给你一点启动,我会选择你的代码的一部分。例如,而不是写&#34;

if (nameOfPlanetsAndTime[userLocation] < 0){
        print("Not a Valid Location, Please Try Again")}

你可以写

guard let planet = nameofPlanetsAndTime[userLocation] {
    print("Not a Valid Location, Please Try Again")
    return nil
}

return planet

并将函数的返回类型更改为可选的Double。所以方法签名看起来像

func planetAndTime(nameOfPlanetsAndTime: [String:Double], userLocation:String) ->Double?

在Swift&#34; world&#34;中理解选项是非常重要的。我强烈建议你好好看看如何使用它们。我希望这个小例子很有帮助。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309