Поиск по сайту:

Быстрый readLine(), Быстрая печать()


Быстрый ввод

В Swift стандартный ввод невозможен на игровых площадках. Ни в приложении iOS по понятным причинам. Приложение командной строки — это возможный способ чтения входных данных от пользователя. readLine() используется для чтения ввода от пользователя. Он имеет две формы:

  • readLine() : способ по умолчанию.
  • readLine(strippingNewLine: Bool) : по умолчанию установлено значение true. Swift всегда предполагает, что новая строка не является частью ввода

readLine() Строка по умолчанию. Добавьте следующую строку в файл main.swift.

let str = readLine() //assume you enter your Name
print(str) //prints Optional(name)

Чтобы развернуть необязательный элемент, мы можем использовать следующий код:

if let str = readLine(){
print(str)
}

Чтение Int или Float

Чтобы прочитать ввод как Int или Float, нам нужно преобразовать возвращаемую строку из ввода в один из них.

if let input = readLine()
{
    if let int = Int(input)
    {
        print("Entered input is \(int) of the type:\(type(of: int))")
    }
    else{
        print("Entered input is \(input) of the type:\(type(of: input))")
    }
}

Для Float замените инициализатор Int на Float.

Чтение нескольких входов

Следующий код считывает несколько входных данных, а также проверяет, повторяется ли какой-либо из входных данных.

while let input = readLine() {
    guard input != "quit" else {
        break
    }
    
    if !inputArray.contains(input) {
        inputArray.append(input)
        print("You entered: \(input)")
    } else {
        print("Negative. \"\(input)\" already exits")
    }
    
    print()
    print("Enter a word:")
}

Чтение ввода, разделенного пробелами

Следующий код считывает входные данные в виде массива, разделенного пробелами.

let array = readLine()?
    .split {$0 == " "}
    .map (String.init)

if let stringArray = array {
    print(stringArray)
}

Функция разделения действует как разделитель пробелов. Он разделяет ввод пробелами и отображает каждый из них как строку. Наконец, они объединяются в виде массива.

Чтение 2D-массива

Следующий код считывает 2D-массив

var arr = [[Int]]()
for _ in 0...4 {
    var aux = [Int]()

    readLine()?.split(separator: " ").map({
        if let x = Int($0) {
        aux.append(x)
        }
        else{
            print("Invalid")
        }
    })
    arr.append(aux)
}

print(arr)

В приведенном выше коде мы можем создать 4 подмассива внутри массива. Если на каком-либо этапе мы нажмем Enter, ничего не вводя в строку, она будет считаться пустым подмассивом.

Быстрая печать()

Мы часто использовали оператор print() в наших стандартных выводах. На самом деле функция печати выглядит следующим образом: за оператором print(_:separator:terminator:) print() следует разделитель новой строки по умолчанию.

print(1...5) //// Prints "1...5"

print(1.0, 2.0, 3.0, 4.0, 5.0) //1.0 2.0 3.0 4.0 5.0

print("1","2","3", separator: ":") //1:2:3

for n in 1...5 {
    print(n, terminator: "|")
}
//prints : 1|2|3|4|5|

  • терминатор добавляется в конце каждого оператора печати.
  • разделитель добавляется между выходными значениями.

Объединение строки со значениями Мы используем \(value_goes_here) для добавления значений внутрь строки.

var value = 10
print("Value is \(value)") // Value is 10

На этом мы заканчиваем этот учебник по стандартному вводу и выводу Swift.