Swift를 공부하던 중 랜덤하게 값을 뽑는 함수를 사용해 보았다.
그래서 이번엔 Swift random(), randomElement()에 대해 기록해 보쟈!!🎉
🔸 Swift에서 random() 함수는,
static func random(in range: Range<Int>) -> Int
범위(range)를 매개변수로 범위 안에 있는 값을 랜덤하게 Int 값을 반환해 준다. 때문에, 중복해 같은 값이 나올 수 있다.
for _ in 1...3 {
print(Int.random(in: 1..<10))
}
//3
//3
//1
여기서,
random() 함수는 반환 타입이 Int로 고정이고, 매개 변수가 범위이기 때문에, 연속적인 값에서만 반환이 가능하다.
하지만, randomElement() 함수는 배열이라 다른 여러 컬렉션 안 임의의 요소를 반환해 주기 때문에 좀 더 다양하게 사용이 가능하다.
🔸 Swift에서 randomElement() 함수는,
func randomElement() -> Element?
매개변수는 없으며 옵셔널 타입의 요소를 반환해 준다. 때문에, 사용에 있어 옵셔널 바인딩 또는, 강제 추출이 필요하다.
var names = ["시원", "무개", "길동", "우치"]
for _ in 1...3 {
print(names.randomElement()!)
}
옵셔널 바인딩을 하면,
var names = ["시원", "무개", "길동", "우치"]
for _ in 1...3 {
if let name = names.randomElement() {
print(name)
} else {
print("nil")
}
}
중복되지 않도록 이름을 출력하고 싶으면,
추출과 동시에 배열 또는 모든 컬렉션에서 요소를 제거 시키면, 중복 반환을 방지할 수 있다.
var names: [String] = ["시원", "무개", "길동", "우치"]
for _ in 1...6 {
if let name = names.randomElement() {
print(name)
names.remove(at: names.firstIndex(of: name)!)
} else {
print("nil")
}
}
//우치
//시원
//무개
//길동
//nil
//nil
'Swift' 카테고리의 다른 글
[Swift] Protocol (0) | 2022.02.23 |
---|---|
[Swift] 객체지향(OOP) (0) | 2022.02.23 |
[Swift] 옵셔널 추출 (1) | 2022.02.14 |
[Swift]Class, Instance, Object 알아보기 (0) | 2022.02.07 |
[Swift]옵션널 기본 (1) | 2022.01.31 |