Skip to content

Instantly share code, notes, and snippets.

View sgr-ksmt's full-sized avatar
👉
👁👃👁

Suguru Kishimoto sgr-ksmt

👉
👁👃👁
View GitHub Profile
@sgr-ksmt
sgr-ksmt / gta.swift
Created July 29, 2017 03:50
Generic Type Aliases
typealias Generator<T> = (CIImage) -> T?
func outputCGImage<T: CGImage>(generator: Generator<T>) -> T? {
return filter.outputImage.flatMap(generator)
}
func outputUIImage<T: UIImage>(generator: Generator<T>) -> T? {
return filter.outputImage.flatMap(generator)
}
var set: Set<Int> = [1,2,3,4]
func f1<T>(value: T, set: inout Set<T>) {
if set.contains(value) {
set.remove(value)
} else {
set.insert(value)
}
}
@sgr-ksmt
sgr-ksmt / Contents.swift
Last active May 9, 2022 23:07
JSONDecoder+keypath
//: Playground - noun: a place where people can play
import UIKit
var json: String = """
{
"result": {
"persons": [
{
let f: ((Int, Int)) -> Void = {
print($0.0, $0.1)
}
let f1: ((Int, Int)) -> Void = { arg in
let (x, y) = arg
print(x, y)
}
let f2: ((Int, Int)) -> Void = { (arg: (x: Int, y: Int)) in
@sgr-ksmt
sgr-ksmt / ObservableType+compose.swift
Last active May 3, 2023 03:01
compose operator for RxSwift
struct ComposeTransformer<T, R> {
let transformer: (Observable<T>) -> Observable<R>
init(transformer: @escaping (Observable<T>) -> Observable<R>) {
self.transformer = transformer
}
func call(_ observable: Observable<T>) -> Observable<R> {
return transformer(observable)
}
}
import Foundation
import RxSwift
import Firebase
extension FIRAuth {
public enum AuthProvider {
case emailPassword(String, String)
case facebook(String)
case google(String, String)
case twitter(String, String)
@sgr-ksmt
sgr-ksmt / playground.swift
Last active March 23, 2017 12:01
Optional
import PlaygroundSupport
import Foundation
let me: String??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
class Baz: NSObject {
dynamic var value: String = ""
override class func automaticallyNotifiesObservers(forKey key: String) -> Bool {
if key == "value" {
return true
}
return super.automaticallyNotifiesObservers(forKey: key)
}
class Hoge {
var a: String? {
didSet {
b = a
}
}
var b: String?
deinit {
print("\(#function)")
@sgr-ksmt
sgr-ksmt / LinkedList.swift
Last active March 3, 2017 03:25
LinkedList in Swift
indirect enum LinkedListNode<T> {
case value(element: T, next: LinkedListNode<T>)
case end
}
extension LinkedListNode: Sequence {
func makeIterator() -> LinkedListIterator<T> {
return LinkedListIterator(self)
}
}