Замыкания (closure), или замыкающие выражения — это сгруппированный программный код, который может быть передан в виде параметра и многократно использован. Ничего не напоминает? Если вы скажете, что в этом определении узнали функции, то будете полностью правы. Поговорим об этом подробнее.
1)Напишите замыкание, которое производит вывод на консоль сообщения «Hello, World!».
2)Вызовите данное замыкание
3)Какой тип данных у данного замыкания?
//1) // для того, чтобы замыкание могло быть вызвано, оно должно быть проинициализировано параметру let closureHello = { print("Hello, World!") } //2) closureHello() //3) //Тип данных замыкания: () -> () type(of:closureHello) // (() -> ()).Type
Из представленных ниже функциональных типов укажите те, которые указывают на то:
1) что функция/замыкание не принимает входных аргументов и ничего не возвращает
2) что функция принимает один входной аргумент
3) что функция возвращает значение
() -> (:) (_) -> () (Int) -> () -> () () -> Void () -> (String) () -> ()
1)
4 и 6
2)
3, т.к. функция принимает входной аргумент типа Int, требований к возвращаемому значению в данного подзадании нет)
3)
3, т.к. функция возвращает значение типа () -> ()
5, т.к. функция возвращает значение типа String
1) Напишите замыкание, которое принимает на вход параметр типа String и выводит его значение на консоль.
2) Вызовите данное замыкание
3) Какой тип данных у данного замыкания?
//1) let closurePrintMessage = { (message: String) in print(message) } //2) closurePrintMessage("Этот текст будет выведен на консоль") // вариант решения, предложенный Тимуром @magic1620 let printString: (String) -> () = { print($0) }
1) Напишите замыкание, которое принимает на вход два целочисленных параметра и возвращает их сумму.
2) Протестируйте работу данного замыкания
3) Какой тип данных будет у данного замыкания?
//1) let closureSumOfTwoInt = { (a: Int, b: Int) in return a + b } //2) closureSumOfTwoInt(4,7) //11 //3) // тип данных - (Int, Int) -> Int type(of: closureSumOfTwoInt) // ((Int, Int) -> Int).Type
7 Comments
done
3 задание
можно еще сократить:
let printString = { print($0) }
Добрый вечер, 4 задание можно решить еще и таким способом:
var closureSumOfTwoInt: (Int, Int) -> (Int) = { return $0 + $1 }
closureSumOfTwoInt(1, 2)
В 9 задании ошибка!
Если написать так: print( arrayOfInt.sorted(by: ) )
задание №9 к главе 16, вроде бы ошибка. Нужно отсортировать массив по убыванию (значит от большего к меньшему), в решении указано наоборот.. Задание 9Вам дан массив целочисленных значенийlet arrayOfInt = [2,55,1,2,77,24,1,2]Отсортируйте его элементы по убыванию и выведите на консоль Правильный ответ Так как массив хранится в константе, то возможно использовать метод sorted(by:), но не sort(by:), т.к. первый возвращает отсортированное значение, а второй сортирует значение исходной коллекцииprint( arrayOfInt.sorted(by: <) ) by: >
Потрясающие задания! Спасибо. Справился.
Пишу этот коммент потому что получается!