Swiftpack.co - Package - VergeGroup/Chain

& - chain

A tiny library that enables us to describe operations in method-chain.

Usage


let result: String = ""&.map { Int($0) }.do { print($0 as Any) }.value

let value: String = ""&.filter { !$0.isEmpty }.ifEmpty("b").value

let view: UIView = UIView()&.do {
  $0.backgroundColor = .white
}.value

Motivation

Actually, I'm not addict to that getting a custom operator.
However a global function or operator are only way to add a new feature without customizing our own types.

Other way is using something protocol and extending it like this.
It can not be used in struct without adding that protocol.

& opeartor or chain global function these returns wrapper value Chain<Value>.

let text = ""

let chain: Chain<String> = chain(text)
let text = ""

let chain: Chain<String> = text&

This wrapper structure enables method-chain. In exchange, it needs to Chain<String>.value at the end of method-chain.

In fact, this structure looks very natural, because the all of method chaining in Swift standard libary come from an kind of monad.
Like, Optional, Array and Dictionary.

And this keeps Swift clean code base at the beginning.
You have no methods at you declared a struct!