This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func f()->(Int,Int) { | |
return (1,1) | |
} | |
func g(f: ()->(Int?,Int?)) -> (Int,Int) { | |
let (a,b) = f() | |
return (a ?? 0, b ?? 0) | |
} | |
// ()->(Int,Int) is substitutable for |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
infix operator |> { | |
associativity left | |
} | |
func |><T,U>(t: T, f: T->U) -> U { | |
return f(t) | |
} | |
// this ought to be enough... | |
func reverse<T: CollectionType>(source: LazyRandomAccessCollection<T>) -> LazyBidirectionalCollection<RandomAccessReverseView<T>> { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
infix operator |> { | |
associativity left | |
} | |
func |><A,B>(a: A, f: A->B) -> B { | |
return f(a) | |
} | |
// this ought to be enough... | |
func reverse<D: CollectionType where D.Index : BidirectionalIndexType>(source: LazyRandomAccessCollection<D>) -> LazyBidirectionalCollection<RandomAccessReverseView<D>> { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public struct ZipOuter2<S1: SequenceType, S2: SequenceType>: SequenceType { | |
private let _s1: S1 | |
private let _s2: S2 | |
init(_ s1: S1, _ s2: S2) { | |
_s1 = s1 | |
_s2 = s2 | |
} | |
public typealias Generator = GeneratorOf<(S1.Generator.Element?, S2.Generator.Element?)> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func findFirst<S: SequenceType>(seq: S, predicate: S.Generator.Element -> Bool) -> S.Generator.Element? { | |
for x in seq { | |
if predicate(x) { return x } | |
} | |
return nil | |
} | |
func not<T>(predicate: T -> Bool) -> (T -> Bool) { | |
return { x in !predicate(x) } | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// from http://stackoverflow.com/questions/27635981/transform-from-dictionary-to-array-in-swift-without-a-for-loop | |
// | |
// Given [ | |
// "title" : ["abc", "def"], | |
// "time" : ["1234", "5678", "0123"], | |
// "content":["qwerty", "asdfg", "zxcvb"] | |
// ] | |
// | |
// how do you get to this: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// import Foundation | |
struct S { | |
var i: Int | |
} | |
func f(inout s: S) -> Int { | |
s.i += 1 | |
return s.i | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func measure(title: String?, call: () -> Void) { | |
let startTime = CACurrentMediaTime() | |
call() | |
let endTime = CACurrentMediaTime() | |
if let title = title { | |
print("\(title): ") | |
} | |
println("Time - \(endTime - startTime)") | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let count = 12 | |
// Simple class that prints when it is created and destroyed | |
class Whiner { | |
let _i: Int | |
init(_ i: Int) { _i = i; println("Init: \(_i)") } | |
deinit { println("Deinit: \(_i)") } | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Note this is a class not a struct, so it does NOT have value semantics | |
public class UnsafeCollection<T> { | |
private var _len: Int = 0 | |
private var _buflen: Int = 0 | |
private var _buf: UnsafeMutablePointer<T> = nil | |
public func removeAll(keepCapacity: Bool = false) { | |
_buf.destroy(_len) | |
_len = 0 | |
if !keepCapacity { |