정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
| numbers | result |
|---|---|
| [1, 2, 3, 4, 5] | [2, 4, 6, 8, 10] |
| [1, 2, 100, -99, 1, 2, 3] | [2, 4, 200, -198, 2, 4, 6] |
keyword
정수로 된 배열을 파라미터로 받고 , 배열의 각 요소에 2를 곱한 값을 반환하는 함수
//매개변수로 정수의 배열을 받는다.
func solution(_ numbers:[Int]) -> [Int] {
var resultArray: [Int] = []
for number in array {
let multipliedValue = number * 2
resultArray.append(multipliedValue)
}
return resultArray
}
}
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
var resultArray: [Int] = []
for i in 0..<numbers.count {
let multipliedValue = numbers[i] * 2
resultArray.append(multipliedValue)
}
return resultArray
}
func solution(_ numbers: [Int]) -> [Int] {
return numbers.map({ $0 * 2 })
}
//Q1: $0
//A1: 매개변수의 첫번째 인자값(클로저 표현식)
return numbers.map({ $0 * 2 })
//Q2: $0 가 첫번째 인자값을 뜻하는 표현식이라면
// 계속 첫번째 인자값에 *2를 해주는것처럼 생각이 되는데,
// 어떻게 배열이 나오는걸까 ?
//A2: map 함수에서 $0의 사용은 요소를 반복하는 동안 현재 요소를 가리킴
// 따라서 답안에서의 함수는 배열의 모든 요소에 연산이 적용됨
//Q3: 그렇다면 $1으로 작성하면 ? 그래도 배열의 각 요소를 반복하면서 연산적용이 가능할까 ?
//A3: 불가능. $1로 표기했다는건 두개의 매개변수가 있다고 가정하는거라 컴파일 오류가 발생함.
// map과 $0은 배열함수를 다룰때 각각의 요소에 접근하는 관례적인 표현.