[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6979":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":20,"defaultBranch":21,"hasWiki":19,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},6979,"ExSwift","pNre\u002FExSwift","pNre","A set of Swift extensions for standard types and classes.","",null,"Swift",3353,310,1,25,0,59.48,"Other",true,false,"master",[],"2026-06-12 04:00:31","# ExSwift\n![CocoaPods](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fv\u002FExSwift.svg) [![Carthage compatible](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCarthage-compatible-4BC51D.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage) [![Build Status](https:\u002F\u002Ftravis-ci.org\u002FpNre\u002FExSwift.svg)](https:\u002F\u002Ftravis-ci.org\u002FpNre\u002FExSwift)\n\nSet of Swift extensions for standard types and classes.\n\n# Installation\n\nBecause of Xcode errors it's not possible to integrate this project with Cocoapods or as Embedded Framework.\n[Read more at Dev Forum](https:\u002F\u002Fdevforums.apple.com\u002Fmessage\u002F983747#983747)\n\n## Use submodule and copy source code\n1. Add ExSwift as a submodule\n2. Open the `ExSwift` project folder, and drag `ExSwift` sub folder with source code into the file navigator of your Xcode project. Make sure you select add to target\n3. Use it\n\n``` swift\ncomponents.takeFirst() { $0.completed }\n```\n\n## Contents ##\n\n- [ExSwift extensions](#extensions)\n\t- [Array](#array)\n    \t- [Instance Methods](#instance-methods)\n\t\t- [Class Methods](#class-methods)\n\t\t- [Operators](#operators)\n    - [Int](#int)\n       - [Properties](#properties)\n    \t- [Instance Methods](#instance-methods-1)\n    \t- [Class Methods](#class-methods-1)\n    - [Float](#float)\n    \t- [Instance Methods](#instance-methods-2)\n    \t- [Class Methods](#class-methods-2)\n    - [String](#string)\n    \t- [Properties](#properties-1)\n    \t- [Instance Methods](#instance-methods-3)\n\t\t- [Class Methods](#class-methods-3)\n\t\t- [Operators](#operators-1)\n    - [Range](#range)\n    \t- [Instance Methods](#instance-methods-4)\n    \t- [Class Methods](#class-methods-4)\n    \t- [Operators](#operators-2)\n    - [Dictionary](#dictionary)\n    \t- [Instance Methods](#instance-methods-5)\n    \t- [Operators](#operators-3)\n    - [NSArray](#nsarray)\n    \t- [Instance Methods](#instance-methods-6)\n   \t- [SequenceOf](#sequenceof)\n    \t- [Instance Methods](#instance-methods-7)\n\t- [Double](#double)\n\t\t- [Instance Methods](#instance-methods-8)\n\t\t- [Class Methods](#class-methods-5)\n\t- [NSDate](#nsdate)\n\t\t- [Instance Methods](#instance-methods-9)\n\t\t- [Operators](#operators-4)\n\n- [Utilities](#utilities)\n\t- [Class Methods](#class-methods-6)\n\t- [Operators](#operators-5)\n\n# Extensions #\n\n## Array ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FArray)\n\n#### Instance Methods ####\n\nName | Signature\n---- | ---------\n**`first`**|`first () -> Element?`\n**`last`**|`last () -> Element?`\n**`get`**|`get (index: Int) -> Element?`\n**`remove`**|`remove \u003CU: Equatable> (element: U)`\n**`at`**|`at (indexes: Int...) -> Array`\n**`take`**|`take (n: Int) -> Array`\n**`takeWhile`**|`takeWhile (condition: (Element) -> Bool) -> Array`\n**`takeFirst`**|`takeFirst (condition: (Element) -> Bool) -> Element?`\n**`tail`**|`tail (n: Int) -> Array`\n**`skip`**|`skip (n: Int) -> Array`\n**`skipWhile`**|`skipWhile (condition: (Element) -> Bool) -> Array`\n**`contains`**|`contains \u003CT: Equatable> (item: T...) -> Bool`\n**`difference`**|`difference \u003CT: Equatable> (values: [T]...) -> [T]`\n**`intersection`**|`intersection \u003CU: Equatable> (values: [U]...) -> Array`\n**`union`**|`union \u003CU: Equatable> (values: [U]...) -> Array`\n**`unique`**|`unique \u003CT: Equatable> () -> [T]`\n**`indexOf`**|`indexOf \u003CT: Equatable> (item: T) -> Int?`\n**`indexOf`**|`indexOf (condition: Element -> Bool) -> Int?`\n**`lastIndexOf`**|`lastIndexOf \u003CT: Equatable> (item: T) -> Int?`\n**`zip`**|`zip (arrays: Array\u003CAny>...) -> [[Any?]]`\n**`partition`**|`partition (var n: Int, var step: Int? = nil) -> [Array]`\u003Cbr>`partition (var n: Int, var step: Int? = nil, pad: Element[]?) -> [Array]`\n**`partitionAll`**|`partitionAll (var n: Int, var step: Int? = nil) -> [Array]`\n**`partitionBy`**|`partitionBy \u003CT: Equatable> (cond: (Element) -> T) -> [Array]`\n**`shuffle`**|`shuffle ()`\n**`shuffled`**|`shuffled () -> Array`\n**`sample`** *(random)*|`sample (size n: Int = 1) -> [T]`\n**`max`**|`max \u003CT: Comparable> () -> T`\n**`min`**|`min \u003CT: Comparable> () -> T`\n**`each`**|`each (call: (Element) -> ())`\u003Cbr>`each (call: (Int, Element) -> ())`\n**`eachRight`**|`eachRight (call: (Element) -> ())`\u003Cbr>`eachRight (call: (Int, Element) -> ())`\n**`any`**|`any (call: (Element) -> Bool) -> Bool`\n**`all`**|`all (call: (Element) -> Bool) -> Bool`\n**`reject`**|`reject (exclude: (Element -> Bool)) -> Array`\n**`pop`**|`pop() -> Element`\n**`push`**|`push(newElement: Element)`\n**`shift`**|`shift() -> Element`\n**`unshift`**|`unshift(newElement: Element)`\n**`insert`**|`insert (newArray: Array, atIndex: Int)`\n**`groupBy`**|`groupBy \u003CU> (groupingFunction group: (Element) -> (U)) -> [U: Array]`\n**`countBy`**|`countBy \u003CU> (groupingFunction group: (Element) -> (U)) -> [U: Int]`\n**`countWhere`**|`countWhere (test: (Element) -> Bool) -> Int`\n**`reduce`**|`reduce (combine: (Element, Element) -> Element) -> Element?`\n**`reduceRight`**|`reduceRight \u003CU>(initial: U, combine: (U, Element) -> U) -> U`\n**`mapFilter`**|`mapFilter \u003CV> (mapFunction map: (Element) -> (V)?) -> [V]`\n**`implode`**|`implode \u003CC: ExtensibleCollection> (separator: C) -> C?`\n**`flatten`**|`flatten \u003COutType> () -> [OutType]`\n**`flattenAny`**|`flattenAny () -> [AnyObject]`\n**`toDictionary`**|`toDictionary \u003CU> (keySelector:(Element) -> U) -> [U: Element]`\n**`toDictionary`**|`toDictionary \u003CK, V> (transform: (Element) -> (key: K, value: V)?) -> [K: V]`\n**`cycle`**|`cycle (n: Int? = nil, block: (T) -> ())`\n**`bSearch`**|`bSearch (block: (T) -> (Bool)) -> T?`\n**`bSearch`**|`bSearch (block: (T) -> (Int)) -> T?`\n**`sortUsing`**|`sortUsing\u003CU:Comparable>(block: ((T) -> U)) -> [T]`\n**`transposition`**|`transposition (array: [[T]]) -> [[T]]`\n**`permutation`**|`permutation (length: Int) -> [[T]]`\n**`repeatedPermutation`**|`repeatedPermutation(length: Int) -> [[T]]`\n**`combination`**|`combination (length: Int) -> [[Element]]`\n**`repeatedCombination `**|`repeatedCombination (length: Int) -> [[Element]]`\n\n#### Class Methods ####\n\nName | Signatures\n---- | ----------\n**`range`**|`range \u003CU: ForwardIndex> (range: Range\u003CU>) -> Array\u003CU>`\n\n#### Operators ####\nName | Signature | Function\n---- | --------- | --------\n`-`|`- \u003CT: Equatable> (first: Array\u003CT>, second: Array\u003CT>) -> Array\u003CT>`|Difference\n`-`|`- \u003CT: Equatable> (first: Array\u003CT>, second: T) -> Array\u003CT>`|Element removal\n`&`|`& \u003CT: Equatable> (first: Array\u003CT>, second: Array\u003CT>) -> Array\u003CT>`|Intersection\n\u003Ccode>&#124;\u003C\u002Fcode>|\u003Ccode>&#124; \u003CT: Equatable> (first: Array\u003CT>, second: Array\u003CT>) -> Array\u003CT>\u003C\u002Fcode>|Union\n`* Int`|`* \u003CItemType> (array: ItemType[], n: Int) -> [ItemType]`|Returns a new array built by concatenating int copies of self\n`* String`|`* (array: String[], separator: String) -> String`|Equivalent to `array.implode(String)`\n`[rangeAsArray: x..y]`\u003Cbr>`[rangeAsArray: x...y]`|`subscript(#rangeAsArray: Range\u003CInt>) -> Array`|Returns the sub-array from index *x* to index *y*\n`[x, y, ...]`|`subscript(first: Int, second: Int, rest: Int...) -> Array`|Returns the items at *x*, *y*\n\n## Int ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FInt)\n\n#### Properties ####\nName |\n---- |\n`NSTimeInterval`**`years`**|\n`NSTimeInterval`**`year`**|\n`NSTimeInterval`**`days`**|\n`NSTimeInterval`**`day`**|\n`NSTimeInterval`**`hours`**|\n`NSTimeInterval`**`hour`**|\n`NSTimeInterval`**`minutes`**|\n`NSTimeInterval`**`minute`**|\n`NSTimeInterval`**`seconds`**|\n`NSTimeInterval`**`second`**|\n\n#### Instance Methods ####\n\nName | Signatures\n---- | ----------\n**`times`**|`times \u003CT> (call: (Int) -> T)`\u003Cbr>`times \u003CT> (call: () -> T)`\u003Cbr>`times (call: () -> ())`\n**`isEven`**|`isEven () -> Bool`\n**`isOdd`**|`idOdd () -> Bool`\n**`upTo`**|`upTo (limit: Int, call: (Int) -> ())`\n**`downTo`**|`downTo (limit: Int, call: (Int) -> ())`\n**`clamp`**|`clamp (range: Range\u003CInt>) -> Int`\u003Cbr>`clamp (min: Int, max: Int) -> Int`\n**`isIn`**|`isIn (range: Range\u003CInt>, strict: Bool = false) -> Bool`\n**`digits`**|`digits () -> Array\u003CInt>`\n**`abs`**|`abs () -> Int`\n**`gcd`**|`gcd (n: Int) -> Int`\n**`lcm`**|`lcm (n: Int) -> Int`\n\n#### Class Methods ####\n\nName | Signatures\n---- | ----------\n**`random`**|`random(min: Int = 0, max: Int) -> Int`\n\n\n## Float ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FFloat)\n\n#### Instance Methods ####\n\nName | Signature\n---- | ---------\n**`abs`**|`abs () -> Float`\n**`sqrt`**|`sqrt () -> Float`\n**`round`**|`round () -> Float`\n**`ceil`**|`ceil () -> Float`\n**`floor`**|`floor () -> Float`\n**`clamp`**|`clamp (min: Float, _ max: Float) -> Float`\n\n#### Class Methods ####\n\nName | Signatures\n---- | ----------\n**`random`**|`random(min: Float = 0, max: Float) -> Float`\n\n## String ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FString)\n\n#### Properties ####\nName |\n---- |\n**`length`**|\n**`capitalized`**|\n\n#### Instance Methods ####\n\nName | Signature\n---- | ---------\n**`explode`**|`explode (separator: Character) -> [String]`\n**`at`**|`at (indexes: Int...) -> [String]`\n**`matches`**|`matches (pattern: String, ignoreCase: Bool = false) -> [NSTextCheckingResult]?`\n**`insert`**|`insert (index: Int, _ string: String) -> String`\n**`ltrimmed`**|`ltrimmed () -> String`\n**`ltrimmed`**|`ltrimmed (set: NSCharacterSet) -> String`\n**`rtrimmed`**|`rtrimmed () -> String`\n**`rtrimmed`**|`rtrimmed (set: NSCharacterSet) -> String`\n**`trimmed`**|`trimmed () -> String`\n**`rtrimmed`**|`rtrimmed (set: NSCharacterSet) -> String`\n**`toDouble`**|`toDouble() -> Double?`\n**`toFloat`**|`toFloat() -> Float?`\n**`toUInt`**|`toUInt() -> UInt?`\n**`toBool`**|`toBool() -> Bool?`\n**`toDate`**|`toDate(format : String? = \"yyyy-MM-dd\") -> NSDate?`\n**`toDateTime`**|`toDateTime(format : String? = \"yyyy-MM-dd hh-mm-ss\") -> NSDate?`\n\n\n#### Class Methods ####\n\nName | Signature\n---- | ---------\n**`random`**|`func random (var length len: Int = 0, charset: String = \"...\") -> String`\n\n#### Operators ####\nName | Signature\n---- | ---------\n`[x]`|`subscript(index: Int) -> String?`\n`[x..y]`\u003Cbr>`[x...y]`|`subscript(range: Range\u003CInt>) -> String`\n`[x, y, z]`|`subscript (indexes: Int...) -> [String]`\n`S * n`|`* (first: String, second: Int) -> String`\n`=~`|`=~ (string: String, pattern: String) -> Bool`\u003Cbr>`=~ (string: String, options: (pattern: String, ignoreCase: Bool)) -> Bool`\u003Cbr>`=~ (strings: [String], pattern: String) -> Bool`\u003Cbr>`=~ (strings: [String], options: (pattern: String, ignoreCase: Bool)) -> Bool`\n\u003Ccode>&#124;~\u003C\u002Fcode>|\u003Ccode>&#124;~ (string: String, pattern: String) -> Bool\u003C\u002Fcode>\u003Cbr>\u003Ccode>&#124;~ (string: String, options: (pattern: String, ignoreCase: Bool)) -> Bool\u003C\u002Fcode>\n\n## Range ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FRange)\n\n#### Instance Methods ####\n\nName | Signatures\n---- | ----------\n**`times`**|`times (call: (T) -> ())`\u003Cbr>`times (call: () -> ())`\n**`each`**|`each (call: (T) -> ())`\n**`toArray`**|`toArray () -> [T]`\n\n#### Class Methods ####\n\nName | Signature\n---- | ---------\n**`random`**|`random (from: Int, to: Int) -> Range\u003CInt>`\n\n#### Operators ####\nName | Signature|Function\n---- | ---------|--------\n`=`|`== \u003CU: ForwardIndex> (first: Range\u003CU>, second: Range\u003CU>) -> Bool`|Compares 2 ranges\n\n## Dictionary ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FDictionary)\n\n#### Instance Methods ####\n\nName | Signatures\n---- | ----------\n**`difference`**|`difference \u003CV: Equatable> (dictionaries: [Key: V]...) -> [Key: V]`\n**`union`**|`union (dictionaries: [Key: Value]...) -> [Key: Value]`\n**`intersection`**|`intersection \u003CK, V where K: Equatable, V: Equatable> (dictionaries: [K: V]...) -> [K: V]`\n**`has`**|`has (key: Key) -> Bool`\n**`map`**|`map \u003CK, V> (mapFunction map: (Key, Value) -> (K, V)) -> [K: V]`\n**`mapFilter`**|`mapFilter \u003CK, V> (mapFunction map: (Key, Value) -> (K, V)?) -> [K: V]`\n**`mapValues`**|`mapValues \u003CV> (mapFunction map: (Key, Value) -> (V)) -> [Key: V]`\n**`mapFilterValues`**|`mapFilterValues \u003CV> (mapFunction map: (Key, Value) -> V?) -> [Key: V]`\n**`each`**|`each(eachFunction each: (Key, Value) -> ())`\n**`filter`**|`filter(testFunction test: (Key, Value) -> Bool) -> [Key: Value]`\n**`merge`**|`merge (dictionaries: [Key: Value]...) -> [Key: Value]`\n**`shift`**|`shift () -> (Key, Value)`\n**`groupBy`**|`groupBy \u003CT> (groupingFunction group: (Key, Value) -> (T)) -> [T: Array\u003CValue>]`\n**`countBy`**|`countBy \u003CT> (groupingFunction group: (Key, Value) -> (T)) -> [T: Int]`\n**`countWhere`**|`countWhere (test: (Key, Value) -> (Bool)) -> Int`\n**`any`**|`any (test: (Key, Value) -> (Bool)) -> Bool`\n**`all`**|`all (test: (Key, Value) -> (Bool)) -> Bool`\n**`reduce`**|`reduce \u003CU> (initial: U, combine: (U, Element) -> U) -> U`\n**`pick`, `at`**|`pick (keys: [Key]) -> Dictionary`\u003Cbr>`pick (keys: Key...) -> Dictionary`\u003Cbr>`at (keys: Key...) -> Dictionary`\n**`toArray`**|`toArray \u003CV> (mapFunction map: (Key, Value) -> V) -> [V]`\n\n#### Operators ####\nName | Signature | Function\n---- | --------- | --------\n`-`|`- \u003CK, V: Equatable> (first: Dictionary\u003CK, V>, second: Dictionary\u003CK, V>) -> Dictionary\u003CK, V>`|Difference\n`&`|`& \u003CK, V: Equatable> (first: Dictionary\u003CK, V>, second: Dictionary\u003CK, V>) -> Dictionary\u003CK, V>`|Intersection\n\u003Ccode>&#124;\u003C\u002Fcode>|\u003Ccode>&#124; \u003CK, V: Equatable> (first: Dictionary\u003CK, V>, second: Dictionary\u003CK, V>) -> Dictionary\u003CK, V>\u003C\u002Fcode>|Union\n\n## NSArray ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FNSArray)\n\n#### Instance Methods ####\n\nName | Signatures\n---- | ----------\n**`cast`**|`cast \u003COutType> () -> [OutType]`\n**`flatten`**|`flatten \u003COutType> () -> [OutType]`\n**`flattenAny`**|`flattenAny () -> [AnyObject]`\n\n## SequenceOf ##\n\nThe 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.\n\nThe `Sequence` protocol cannot be extended, hence the following are extensions to `SequenceOf`. They can be used as follows:\n\n```\nvar source: Sequence = ...\nvar filteredSequence = SequenceOf(source).filter { ... }\n```\n\n#### Instance Methods ####\n\nName | Signatures\n---- | ----------\n**`first`**|`first () -> T?`\n**`any`**|`any (call: (T) -> Bool) -> Bool`\n**`get`**|`get (index: Int) -> T?`\n**`get`**|`get (range: Range\u003CInt>) -> SequenceOf\u003CT>`\n**`indexOf`**|`indexOf \u003CU: Equatable> (item: U) -> Int?`\n**`filter`**|`filter(include: (T) -> Bool) -> SequenceOf\u003CT>`\n**`reject`**|`reject (exclude: (T -> Bool)) -> SequenceOf\u003CT>`\n**`skipWhile`**|`skipWhile(condition:(T) -> Bool) -> SequenceOf\u003CT>`\n**`skip`**|`skip (n:Int) -> SequenceOf\u003CT>`\n**`contains`**|`contains\u003CT:Equatable> (item: T) -> Bool`\n**`take`**|`take (n:Int) -> SequenceOf\u003CT>`\n**`takeWhile`**|`takeWhile (condition:(T?) -> Bool) -> SequenceOf\u003CT>`\n\n## Double ##\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FDouble)\n\n#### Instance Methods ####\n\nName | Signature\n---- | ---------\n**`abs`**|`abs () -> Double`\n**`sqrt`**|`sqrt () -> Double`\n**`round`**|`round () -> Double`\n**`ceil`**|`ceil () -> Double`\n**`floor`**|`floor () -> Double`\n**`clamp`**|`clamp (min: Double, _ max: Double) -> Double`\n**`roundToNearest`**|`roundToNearest(increment: Double) -> Double`\n\n#### Class Methods ####\n\nName | Signatures\n---- | ----------\n**`random`**|`random(min: Double = 0, max: Double) -> Double`\n\n# NSDate #\n\n#### Properties ####\nName | Signatures\n---- | ----\n**`year`** |`Int`\n**`month`**|`Int`\n**`weekday`** |`Int`\n**`weekMonth`**|`Int`\n**`days`** |`Int`\n**`hours`**|`Int`\n**`minutes`** |`Int`\n**`seconds`**| `Int`\n\n#### Instance Methods ####\nName | Signatures\n---- | ----------\n**`add`**|`add(seconds:Int=0, minutes:Int = 0, hours:Int = 0, days:Int = 0, weeks:Int = 0, months:Int = 0, years:Int = 0) -> NSDate`\n**`addSeconds`**|`addSeconds (seconds:Int) -> NSDate `\n**`addMinutes`**|`addMinutes (minute:Int) -> NSDate `\n**`addHours`**|`addHours(hours:Int) -> NSDate `\n**`addDays`**|`addDays(days:Int) -> NSDate `\n**`addWeeks`**|`addWeeks(weeks:Int) -> NSDate`\n**`addMonths`**|`addMonths(months:Int) -> NSDate`\n**`addYears`**|`addYears(years:Int) -> NSDate `\n**`isAfter`**|`isAfter(date: NSDate) -> Bool`\n**`isBefore`**|`isBefore(date: NSDate) -> Bool`\n**`getComponent`**|`getComponent (component : NSCalendarUnit) -> Int`\n\n#### Operators ####\n\nName | Signatures\n---- | ----------\n**`==`**|`==(lhs: NSDate, rhs: NSDate) -> Bool`\n**`\u003C`**|`\u003C(lhs: NSDate, rhs: NSDate) -> Bool`\n**`>`**|`>(lhs: NSDate, rhs: NSDate) -> Bool`\n**`\u003C=`**|`\u003C=(lhs: NSDate, rhs: NSDate) -> Bool`\n**`>=`**|`>=(lhs: NSDate, rhs: NSDate) -> Bool`\n**`==`**|`==(lhs: NSDate, rhs: NSDate) -> Bool`\n\n# Utilities #\n\nExamples in the [Wiki](https:\u002F\u002Fgithub.com\u002FpNre\u002FExSwift\u002Fwiki\u002FExSwift)\n\n#### Class Methods ####\n\nName | Signatures\n---- | ----------\n**`after`**|`after \u003CP, T> (n: Int, function: P -> T) -> (P -> T?)`\u003Cbr>`func after \u003CT> (n: Int, function: () -> T) -> (() -> T?)`\n**`once`**|`once \u003CP, T> (function: P -> T) -> (P -> T?)`\u003Cbr>`once \u003CT> (call: Void -> T) -> (Void -> T?)`\n**`partial`**|`partial \u003CP, T> (function: (P...) -> T, _ parameters: P...) -> ((P...) -> T?)`\n**`bind`**|`bind \u003CP, T> (function: (P...) -> T, _ parameters: P...) -> (() -> T)`\n**`cached`**|`cached \u003CP, R> (function: P -> R) -> (P -> R)`\u003Cbr>`cached \u003CP, R> (function: (P...) -> R) -> ((P...) -> R)`\u003Cbr>`cached \u003CP, R> (function: (P...) -> R, hash: ((P...) -> P)) -> ((P...) -> R)`\n\n#### Operators ####\nName | Signatures\n---- | ----------\n**`\u003C=>`**|`\u003C=> \u003CT: Comparable>(lhs: T, rhs: T) -> Int`\n\n# To Do #\n* [X] Wiki\n* [X] Xcode project for both iOS & OS X\n* [X] Review code comments\n* [ ] Example project\n* [ ] Installation instructions\n* [ ] Benchmark\n","ExSwift 是一个为 Swift 标准类型和类提供扩展的库。它通过添加一系列实用的方法和操作符来增强 Swift 原生数据类型的使用体验，如数组、字典、字符串等常用类型的功能扩展，包括但不限于取第一个满足条件的元素、按条件筛选子集等。项目采用 Swift 语言编写，并且支持通过子模块方式集成到 Xcode 项目中。适用于需要简化代码逻辑、提高开发效率的 iOS 或 macOS 应用场景，尤其适合于那些频繁处理集合与基本数据类型转换的应用程序开发者。",2,"2026-06-11 03:09:59","top_language"]