Swift Combine: prepend() operator

KD Knowledge Diet
2 min readJan 9, 2023

In this tutorial, you are going to look at prepend() operator. Just as the name implies, the prepend() operator is going to append element in your sequence.

A publisher

let numbers = (1...5).publisher
numbers.sink {
print($0) // 1,2,3,4,5
}

I created a range from 1 to 5 and made it a publisher. You can see 1,2,3,4,5 are printed out. But what if I want to prepend a value before the sequence happens?

prepend()

let numbers = (1...5).publisher
numbers
.prepend(100)
.sink {
print($0) // 100, 1,2,3,4,5
}
numbers
.prepend(100, 101)
.sink {
print($0) // 100, 101, 1,2,3,4,5
}
numbers
.prepend(100, 101)
.prepend(-1, -2)
.sink {
print($0) // -1, -2, 100, 101, 1,2,3,4,5
}
numbers
.prepend([45, 47])
.sink {
print($0) // 45, 47, 1, 2, 3, 4, 5
}

When you use this .prepend() operator, you can prepend some element. You can actually pass in a number or numbers to prepend.

Since you are using combination operators and the reactive way of writing your code, you can also chain different operator.

Not only you can provide a variadic parameter (sending multiple values in the argument), you can pass in an array.

Combining Publisher with prepend()

let numbers = (1...5).publisher
let publisher2 = (500...510).publisher
numbers
.prened(publisher2)
.sink {
print($0) //500, 501, 502, 503, 504, 505, ... 510, 1, 2, 3, 4, 5
}

Besides numbers, I created another publisher from 500 to 510. You can pass in a publisher. You can check the result.

Conclusion

  • prepend() allows you to add elements before the sequence.
  • You can pass in variadic parameters , arrays and publisher as a parameter.

--

--

KD Knowledge Diet

Software Engineer, Mobile Developer living in Seoul. I hate people using difficult words. Why not using simple words? Keep It Simple Stupid!