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"
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: " ") }
drop(while:) , tryDrop(while:)
콜로저가 펄스를 리턴할때까지의 엘리먼트를 무시함.
let numbers = [-62, -1, 0, 10, 0, 22, 41, -1, 5]
cancellable = numbers.publisher
.drop { $0 <= 0 }
.sink { print("\\($0)") }
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 "
//퍼블리셔 추가
preappend (요소, 어레이, 퍼블리셔)
앞에 엘리멘츠 추가함. 앞에 추가하는거 말고는 위에랑 똑같음.
prefix() 파라메터: int, closure
int: 앞의 n개의 요소만 방출
closure: 첫 false를 방출하기 전까지만.
let numbers = (0...10)
numbers.publisher
.prefix { $0 < 5 }
.sink { print("\\($0)", terminator: " ") }
first, last, at ,in 등으로 특정 위치에 있는 엘리멘트 방출