我收到一条错误消息:
操场执行失败:
错误:myfirstplayground.playground:21:19:错误:可选类型'String?'的值不展开你是说用'!'要么 '?'? var dateNum = Int(dates)
这是我的代码:
//: Playground - noun: a place where people can play
import Cocoa
import Foundation
class FartsPerDate {
var dates: Int = 0
farts: Int = 0
init( dateNum: Int ) {
self.dates = dateNum
self.fpd()
}
func fpd() -> Int {
farts = Int( (dates - 1)/2 )
return farts
}
}
print("Which date is it? (Enter an integer): >")
var dates = readLine()
var dateNum = Int(dates)
var answer = FartsPerDate(dateNum: dateNum! )
print(answer)
答案 0 :(得分:0)
采用字符串(init(_:radix:)
)的Int初始化程序为“ failable”。这意味着,如果将不能转换为Int
的字符串传递给它,它将返回nil。
听起来String
也是可选的,因此您需要解包字符串并解包生成的Int:
您应该查找“可选绑定”和警卫声明,这是处理可选选项的两种方式:
可选绑定
if let datesString = dates,
let var dateNum = Int(datesString) {
var answer = FartsPerDate(dateNum: dateNum )
print(answer)
} else {
print("You did not enter a valid number")
}
或使用保护声明:
guard let datesString = dates,
let var dateNum = Int(dates) else {
//Normally you'd use a return here but you are not inside a function so you have to
//exit the entire playground
fatalError("You did not enter a valid number")
}
var answer = FartsPerDate(dateNum: dateNum )
print(answer)
每一个Swift程序员都必须处理可选参数。我建议您下载Apple iBook“ Swift编程语言”并阅读有关可选选项的部分,然后使用它们进行大量练习,直到您感到满意为止。