我希望用户输入一个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)
}
}
答案 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;中理解选项是非常重要的。我强烈建议你好好看看如何使用它们。我希望这个小例子很有帮助。