Instance Property インスタンスプロパティ

publisher

A Combine publisher that publishes this instance’s result to each subscriber exactly once, or fails immediately if the result indicates failure. あるCombineパブリッシャー、それはこのインスタンスのもつ結果を各加入者に正確に一度だけ発行します、または結果が不成功を指し示すならば直ぐに失敗します。

Declaration 宣言

var publisher: Result<Success, Failure>.Publisher { get }

Discussion 解説

In the following example, goodResult provides a successful result with the integer value 1. A sink subscriber connected to the result’s publisher receives the output 1, followed by a normal completion (Subscribers.Completion.finished). 以下の例において、goodResultは成功結果を整数値の1で提供します。結果のもつパブリッシャーに接続した流し先の加入者は出力1、それに続けてある正常完了(Subscribers.Completion.finished)を受け取ります。


let goodResult: Result<Int, MyError> = .success(1)
goodResult.publisher
    .sink(receiveCompletion: { print("goodResult done: \($0)")},
          receiveValue: { print("goodResult value: \($0)")} )
// Prints:
// goodResult value: 1
// goodResult done: finished

In contrast with the Just publisher, which always publishes a single value, this publisher might not send any values and instead terminate with an error, if the result is Result.failure(_:). In the next example, badResult is a failure result that wraps a custom error. A sink subscriber connected to this result’s publisher immediately receives a termination (Subscribers.Completion.failure(_:)). 常に単一の値を出版するJustパブリッシャーと対照的に、このパブリッシャーは全く値を送信しないで代わりにエラーで終了するかもしれません、もし結果がResult.failure(_:)であるならば。次の例において、badResultはある不成功結果です、それはあるあつらえのエラーをラップするものです。結果のもつパブリッシャーに接続した流し先の加入者は、直ぐにある終了(Subscribers.Completion.failure(_:))を受け取ります。


struct MyError: Error, CustomDebugStringConvertible {
    var debugDescription: String = "MyError"
}
let badResult: Result<Int, MyError> = .failure(MyError())
badResult.publisher
    .sink(receiveCompletion: { print("badResult done: \($0)")},
          receiveValue: { print("badResult value: \($0)")} )
// Prints:
// badResult done: failure(MyError)

See Also 参照

Publishing a Result 結果の発行