Как вы можете прочитать в документах :
Строка символов, прочитанная из стандартного ввода.Если EOF уже достигнут при вызове readLine (), результат равен nil.
... так что, упрощенно, readLine(strippingNewline:)
не всегда должен возвращать значение и может также возвращатьnil
(без значения), поэтому тип возвращаемого значения String?
, который является необязательным типом, который говорит, что ваша константа равна String
или nil
Если вам нужно получить необязательное значение, вы можете либопринудительное развертывание необязательного значения или проверка, существует ли значение, и если да, присвойте некоторую необязательную константу / переменную, используя необязательную привязку.То же самое вы можете сделать для инициализатора Int
, который также может возвращать nil
, поскольку не каждый String
обязательно является целым числом
print("Enter the first integer")
let input1 = readLine()
print("Enter the second integer")
let input2 = readLine()
if let string1 = input1, let int1 = Int(string1), let string2 = input2, let int2 = Int(string2) {
let small_int = min(int1, int2)
print("The smaller integer is", small_int)
} else {
print("Invalid input")
}
, в качестве альтернативы вы можете использовать значение по умолчанию, поэтому, если значение равно nil
, вашеконстанте будет присвоено значение по умолчанию
print("Enter the first integer")
let int1 = Int(readLine() ?? "") ?? 0
print("Enter the second integer")
let int2 = Int(readLine() ?? "") ?? 0
let small_int = min(int1, int2)
print("The smaller integer is", small_int)