1. drop(untilOutoutFrom:)

    2번째 퍼블리셔가 이벤트를 방출할때까지 1번째 퍼빌리셔가 방출하는 이벤트를 무시함.

    let upstream = PassthroughSubject<Int,Never>()
    let second = PassthroughSubject<String,Never>()
    cancellable = upstream
        .drop(untilOutputFrom: second)
        .sink { print("\\($0)", terminator: " ") }
    
    upstream.send(1)
    upstream.send(2)
    second.send("A")
    upstream.send(3)
    upstream.send(4)
    // Prints "3 4"
    
  2. dropFirst(_ count:Int)

    n번째 엘리먼트까지 무시함.

    let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    cancellable = numbers.publisher
        .dropFirst(5)
        .sink { print("\\($0)", terminator: " ") }
    
  3. drop(while:) , tryDrop(while:)

    콜로저가 펄스를 리턴할때까지의 엘리먼트를 무시함.

    let numbers = [-62, -1, 0, 10, 0, 22, 41, -1, 5]
    cancellable = numbers.publisher
        .drop { $0 <= 0 }
        .sink { print("\\($0)") }
    
  4. append(:), append(_ element: S)

    퍼빌리셔가 방출한 엘리먼트 뒤에 추가적으로 엘리멘트 추가함.

    let dataElements = (0...10)
    cancellable = dataElements.publisher
        .append(0, 1, 255)
        .sink { print("\\($0)", terminator: " ") }
    
    // Prints: "0 1 2 3 4 5 6 7 8 9 10 0 1 255"
    //요소 추가
    let groundTransport = ["car", "bus", "truck", "subway", "bicycle"]
    let airTransport = ["parasail", "jet", "helicopter", "rocket"]
    cancellable = groundTransport.publisher
        .append(airTransport)
        .sink { print("\\($0)", terminator: " ") }
    // Prints: "car bus truck subway bicycle parasail jet helicopter rocket"
    // 어레이추가
    let numbers = (0...10)
    let otherNumbers = (25...35)
    cancellable = numbers.publisher
        .append(otherNumbers.publisher)
        .sink { print("\\($0)", terminator: " ") }
    
    // Prints: "0 1 2 3 4 5 6 7 8 9 10 25 26 27 28 29 30 31 32 33 34 35 "
    //퍼블리셔 추가
    
  5. preappend (요소, 어레이, 퍼블리셔)

    앞에 엘리멘츠 추가함. 앞에 추가하는거 말고는 위에랑 똑같음.

  6. prefix() 파라메터: int, closure

    int: 앞의 n개의 요소만 방출

    closure: 첫 false를 방출하기 전까지만.

    let numbers = (0...10)
    numbers.publisher
        .prefix { $0 < 5 }
        .sink { print("\\($0)", terminator: " ") }
    
    

    Selecting Specific Elements

    first, last, at ,in 등으로 특정 위치에 있는 엘리멘트 방출