Skip to content

Instantly share code, notes, and snippets.

extension Equatable where Self: Sequence {
public static func == (lhs: Sequence<Element>, rhs: Sequence<Element>) -> Bool {
return elementsEqual(lhs, rhs)
}
}
struct ReductionsSequence<Base: Sequence, T>: Sequence, IteratorProtocol {
typealias Element = T
private var iterator: AnyIterator<Base.Element>
private var current: T
private let reducer: (T, Base.Element) -> T
init(sequence: Base, initialValue: T, reducer: @escaping (T, Base.Element) -> T) {
iterator = AnyIterator(sequence.makeIterator())
self.reducer = reducer
extension Array {
func sortedWith<T: Comparable, U: Comparable>(_ comparableTransform: (Array.Element) -> (T, U)) -> [Array.Element] {
return sorted(by: { (a, b) -> Bool in
let tupleA = comparableTransform(a)
let tupleB = comparableTransform(b)
return tupleA.0 == tupleB.0 && tupleA.1 == tupleB.1
})
}
}
extension Array {
func sortedWith<T: Comparable>(_ comparableTransform: (Array.Element) -> T) -> [Array.Element] {
return sorted(by: { (a, b) -> Bool in
return comparableTransform(a) > comparableTransform(b)
})
}
}
extension Array where Element: Hashable {
func uniqueElements() -> [Element] {
return uniqueElements(by: { $0 })
}
func uniqueElements<T: Hashable>(by uniqueValue: (Element) -> T) -> [Element] {
var uniqueElements: [Array.Element] = []
var set: Set<T> = Set()
for element in self {
let value = uniqueValue(element)
extension Array {
func sortedWith<T: Comparable>(_ comparableTransform: (Array.Element) -> T) -> [Array.Element] {
return sorted(by: { (a, b) -> Bool in
return comparableTransform(a) > comparableTransform(b)
})
}
}
let carts: [Card] = []
#!/usr/bin/ruby
raise "Usage: ./framework.rb <path to pbxproj file> <name of target>" unless ARGV.size == 2
proj_file, name = ARGV
str = IO.read(proj_file).gsub("com.apple.product-type.application", "com.apple.product-type.framework").gsub("#{name}.app", "#{name}.framework")
IO.write(proj_file, str)
func didTouchDown() {
self.vc = DestViewController()
}
// about 75ms elapses here...
func didTouchUp() {
presentVC(self.vc)
}
func didTouchUp() {
let vc = DestViewController()
presentVC(vc)
}
import UIKit
class MyViewController: UIViewController {
@IBOutlet weak var button: UIButton!
var vc: UIViewController? = nil
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(self, action: #selector(down), for: .touchDown)