티스토리 뷰

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함