Что я обнаружил
Этот вопрос о чем-то, что я заметил немного странно в языке Swift
.Я сталкивался с этим поведением, так как это было ошибкой в моем коде.
Если я создал массив для сетки как неявно развернутый необязательный параметр, то map
ведет себя странно.Посмотрите на этот код:
let grid: [[Int]]! = [ // May be defined like this if set later on
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(grid.map { $0[0] }!)
// Prints "[1, 2, 3]" (not what I wanted)
print(grid!.map { $0[0] })
// Prints "[1, 4, 7]" (what I wanted)
Я знаю, что строку можно получить, просто набрав grid[0]
.Тем не менее, я пытаюсь получить столбец.
Я попробовал первый метод выше, который дает только строку вместо столбца.Второй метод сработал и дал столбец.
В чем причина?
Я определил grid
как [[Int]]!
, что является неявно развернутым необязательным.
- Почему мне нужно принудительно развернуть
grid
для правильного использования map
? - Почему первый метод действует так же, как и возврат строки с использованием
grid[0]
?