JavaScript (Lo-Dash, Underscore) & Ruby inspired set of Swift extensions for standard types and classes.
Examples in the Wiki
Name | Signature |
---|---|
first |
first () -> Element? |
last |
last () -> Element? |
get |
get (index: Int) -> Element? |
remove |
remove <U: Equatable> (element: U) |
at |
at (indexes: Int...) -> Array |
take |
take (n: Int) -> Array |
takeWhile |
takeWhile (condition: (Element) -> Bool) -> Array |
tail |
tail (n: Int) -> Array |
skip |
skip (n: Int) -> Array |
skipWhile |
skipWhile (condition: (Element) -> Bool) -> Array |
contains |
contains <T: Equatable> (item: T...) -> Bool |
difference |
difference <T: Equatable> (values: Array<T>...) -> Array<T> |
intersection |
intersection <U: Equatable> (values: Array<U>...) -> Array |
union |
union <U: Equatable> (values: Array<U>...) -> Array |
unique |
unique <T: Equatable> () -> Array<T> |
indexOf |
indexOf <T: Equatable> (item: T) -> Int? |
lastIndexOf |
lastIndexOf <T: Equatable> (item: T) -> Int? |
zip |
zip (arrays: Array<Any>...) -> Array<Array<Any?>> |
partition |
partition (var n: Int, var step: Int? = nil) -> Array<Array<Element>> partition (var n: Int, var step: Int? = nil, pad: Element[]?) -> Array<Array<Element>> |
partitionAll |
partitionAll (var n: Int, var step: Int? = nil) -> Array<Array<Element>> |
partitionBy |
partitionBy <T: Equatable> (cond: (Element) -> T) -> Array<Array<Element>> |
shuffle |
shuffle () |
shuffled |
shuffled () -> Array |
sample (random) |
sample (size n: Int = 1) -> Array<T> |
max |
max <T: Comparable> () -> T |
min |
min <T: Comparable> () -> T |
each |
each (call: (Element) -> ()) each (call: (Int, Element) -> ()) |
eachRight |
eachRight (call: (Element) -> ()) eachRight (call: (Int, Element) -> ()) |
any |
any (call: (Element) -> Bool) -> Bool |
all |
all (call: (Element) -> Bool) -> Bool |
reject |
reject (exclude: (Element -> Bool)) -> Array |
pop |
pop() -> Element |
push |
push(newElement: Element) |
shift |
shift() -> Element |
unshift |
unshift(newElement: Element) |
insert |
insert (newArray: Array, atIndex: Int) |
groupBy |
groupBy <U> (groupingFunction group: (Element) -> (U)) -> Dictionary<U, Array> |
countBy |
countBy <U> (groupingFunction group: (Element) -> (U)) -> Dictionary<U, Int> |
reduce |
reduce (combine: (Element, Element) -> Element) -> Element? |
reduceRight |
reduceRight <U>(initial: U, combine: (U, Element) -> U) -> U |
implode |
implode <C: ExtensibleCollection> (separator: C) -> C? |
flatten |
flatten <OutType> () -> OutType[] |
sortBy |
sortBy (isOrderedBefore: (T, T) -> Bool) -> Array<T> |
toDictionary |
toDictionary <U> (keySelector:(Element) -> U) -> Dictionary<U, Element> |
Name | Signatures |
---|---|
range |
range <U: ForwardIndex> (range: Range<U>) -> Array<U> |
Name | Signature | Function |
---|---|---|
- |
- <T: Equatable> (first: Array<T>, second: Array<T>) -> Array<T> |
Difference |
- |
- <T: Equatable> (first: Array<T>, second: T) -> Array<T> |
Element removal |
& |
& <T: Equatable> (first: Array<T>, second: Array<T>) -> Array<T> |
Intersection |
| |
| <T: Equatable> (first: Array, second: Array) -> Array |
Union |
* Int |
* <ItemType> (array: ItemType[], n: Int) -> ItemType[] |
Returns a new array built by concatenating int copies of self |
* String |
* (array: String[], separator: String) -> String |
Equivalent to array.implode(String) |
[x..y] [x...y] |
subscript(range: Range<Int>) -> Array |
Returns the sub-array from index x to index y |
[x, y, ...] |
subscript(first: Int, second: Int, rest: Int...) -> Array |
Returns the items at x, y |
Examples in the Wiki
Name | Signatures |
---|---|
times |
times <T> (call: (Int) -> T) times <T> (call: () -> T) times (call: () -> ()) |
isEven |
isEven () -> Bool |
isOdd |
idOdd () -> Bool |
upTo |
upTo (limit: Int, call: (Int) -> ()) |
downTo |
downTo (limit: Int, call: (Int) -> ()) |
clamp |
clamp (range: Range<Int>) -> Int clamp (min: Int, max: Int) -> Int |
isIn |
isIn (range: Range<Int>, strict: Bool = false) -> Bool |
digits |
digits () -> Array<Int> |
abs |
abs () -> Int |
gcd |
gcd (n: Int) -> Int |
lcm |
lcm (n: Int) -> Int |
Name | Signatures |
---|---|
random |
random(min: Int = 0, max: Int) -> Int |
Examples in the Wiki
Name | Signature |
---|---|
abs |
abs () -> Float |
sqrt |
sqrt () -> Float |
round |
round () -> Float |
ceil |
ceil () -> Float |
floor |
floor () -> Float |
digits |
digits () -> (integerPart: Int[], fractionalPart: Int[]) |
Name | Signatures |
---|---|
random |
random(min: Float = 0, max: Float) -> Float |
Examples in the Wiki
Name |
---|
length |
Name | Signature |
---|---|
explode |
explode (separator: Character) -> String[] |
at |
at (indexes: Int...) -> String[] |
matches |
matches (pattern: String, ignoreCase: Bool = false) -> NSTextCheckingResult[]? |
capitalized |
capitalized () -> String |
insert |
insert (index: Int, _ string: String) -> String |
ltrimmed |
ltrimmed () -> String |
rtrimmed |
rtrimmed () -> String |
trimmed |
trimmed () -> String |
Name | Signature |
---|---|
random |
func random (var length len: Int = 0, charset: String = "...") -> String |
Name | Signature |
---|---|
[x] |
subscript(index: Int) -> String? |
[x..y] [x...y] |
subscript(range: Range<Int>) -> String |
[x, y, z] |
subscript (indexes: Int...) -> String[] |
S * n |
* (first: String, second: Int) -> String |
=~ |
=~ (string: String, pattern: String) -> Bool =~ (string: String, options: (pattern: String, ignoreCase: Bool)) -> Bool =~ (strings: String[], pattern: String) -> Bool =~ (strings: String[], options: (pattern: String, ignoreCase: Bool)) -> Bool |
|~ |
|~ (string: String, pattern: String) -> Bool |~ (string: String, options: (pattern: String, ignoreCase: Bool)) -> Bool |
Examples in the Wiki
Name | Signatures |
---|---|
times |
times (call: (T) -> ()) times (call: () -> ()) |
each |
each (call: (T) -> ()) |
Name | Signature |
---|---|
random |
random (from: Int, to: Int) -> Range<Int> |
Name | Signature | Function |
---|---|---|
= |
== <U: ForwardIndex> (first: Range<U>, second: Range<U>) -> Bool |
Compares 2 ranges |
Examples in the Wiki
Name | Signatures |
---|---|
difference |
difference <V: Equatable> (dictionaries: Dictionary<KeyType, V>...) -> Dictionary<KeyType, V> |
union |
union (dictionaries: Dictionary<KeyType, ValueType>...) -> Dictionary<KeyType, ValueType> |
intersection |
intersection <K, V where K: Equatable, V: Equatable> (dictionaries: Dictionary<K, V>...) -> Dictionary<K, V> |
has |
has (key: KeyType) -> Bool |
isEmpty |
isEmpty () -> Bool |
map |
map <K, V> (mapFunction map: (KeyType, ValueType) -> (K, V)) -> Dictionary<K, V> |
mapValues |
mapValues <V> (mapFunction map: (KeyType, ValueType) -> (V)) -> Dictionary<KeyType, V> |
each |
each(eachFunction each: (KeyType, ValueType) -> ()) |
filter |
filter(testFunction test: (KeyType, ValueType) -> Bool) -> Dictionary<KeyType, ValueType> |
merge |
merge (dictionaries: Dictionary<KeyType, ValueType>...) -> Dictionary<KeyType, ValueType> |
shift |
shift () -> (KeyType, ValueType) |
groupBy |
groupBy <T> (groupingFunction group: (KeyType, ValueType) -> (T)) -> Dictionary<T, Array<ValueType>> |
countBy |
countBy <T> (groupingFunction group: (KeyType, ValueType) -> (T)) -> Dictionary<T, Int> |
any |
any (test: (KeyType, ValueType) -> (Bool)) -> Bool |
all |
all (test: (KeyType, ValueType) -> (Bool)) -> Bool |
reduce |
reduce <U> (initial: U, combine: (U, Element) -> U) -> U |
pick , at |
pick (keys: KeyType[]) -> Dictionary pick (keys: KeyType...) -> Dictionary at (keys: KeyType...) -> Dictionary |
Name | Signature | Function |
---|---|---|
- |
- <K, V: Equatable> (first: Dictionary<K, V>, second: Dictionary<K, V>) -> Dictionary<K, V> |
Difference |
& |
& <K, V: Equatable> (first: Dictionary<K, V>, second: Dictionary<K, V>) -> Dictionary<K, V> |
Intersection |
| |
| <K, V: Equatable> (first: Dictionary<K, V>, second: Dictionary<K, V>) -> Dictionary<K, V> |
Union |
Examples in the Wiki
Name | Signatures |
---|---|
cast |
cast <OutType> () -> OutType[] |
flatten |
flatten <OutType> () -> OutType[] |
The following operations can be performed on sequences and are evaluated lazily. Each operation only takes the data it requires from the source sequence in order to return its result.
The Sequence
protocol cannot be extended, hence the following are extensions to SequenceOf
. They can be used as follows:
var source: Sequence = ...
var filteredSequence = SequenceOf(source).filter { ... }
Name | Signatures |
---|---|
first |
first () -> T? |
any |
any (call: (T) -> Bool) -> Bool |
get |
get (index: Int) -> T? |
get |
get (range: Range<Int>) -> SequenceOf<T> |
indexOf |
indexOf <U: Equatable> (item: U) -> Int? |
filter |
filter(include: (T) -> Bool) -> SequenceOf<T> |
reject |
reject (exclude: (T -> Bool)) -> SequenceOf<T> |
skipWhile |
skipWhile(condition:(T) -> Bool) -> SequenceOf<T> |
skip |
skip (n:Int) -> SequenceOf<T> |
contains |
contains<T:Equatable> (item: T) -> Bool |
take |
take (n:Int) -> SequenceOf<T> |
takeWhile |
takeWhile (condition:(T?) -> Bool) -> SequenceOf<T> |
Examples in the Wiki
Name | Signature |
---|---|
abs |
abs () -> Double |
sqrt |
sqrt () -> Double |
round |
round () -> Double |
ceil |
ceil () -> Double |
floor |
floor () -> Double |
Name | Signatures |
---|---|
random |
random(min: Double = 0, max: Double) -> Double |
Examples in the Wiki
Name | Signatures |
---|---|
after |
after <P, T> (n: Int, function: P -> T) -> (P -> T?) func after <T> (n: Int, function: () -> T) -> (() -> T?) |
once |
once <P, T> (function: P -> T) -> (P -> T?) once <T> (call: Void -> T) -> (Void -> T?) |
partial |
partial <P, T> (function: (P...) -> T, _ parameters: P...) -> ((P...) -> T?) |
bind |
bind <P, T> (function: (P...) -> T, _ parameters: P...) -> (() -> T) |
cached |
cached <P, R> (function: (P...) -> R) -> ((P...) -> R) cached <P, R> (function: (P...) -> R, hash: ((P...) -> P)) -> ((P...) -> R) |
- Wiki
- Xcode project for both iOS & OS X
- Review code comments
- Example project
- Installation instructions
- Benchmark