我希望用户输入一个字符串来访问字典中的一个键,然后返回它的耦合值。我确信这不是我的代码唯一的错误,但我想看看我的想法是否正确,并希望得到一些额外的指导:
主要的两个问题是编写正确的语法来连接函数调用中的用户输入 getInput()
(String) func planetAndTime()
该函数正在传递我的字典作为参数。
我的另一个问题是返回函数的 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)
}
}
最佳答案
由于误解了 Swift 语言的工作原理,您的代码存在一些问题,因此我建议您阅读 Swift 官方文档以获取一些关于 Swift 功能的优秀示例。不过,为了让您先行一步,我会选择您的代码的一部分。例如,而不是写“
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“世界”中非常重要,我强烈建议您仔细研究一下如何使用它们。我希望这个小例子对您有所帮助。
关于swift - 使用返回 double 值的用户输入访问字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33006820/