Skip to content

Instantly share code, notes, and snippets.

View myssun0325's full-sized avatar

Youngsun myssun0325

  • Korea
  • 02:59 (UTC +09:00)
View GitHub Profile
@myssun0325
myssun0325 / MakeFutureWithDeferred.swift
Last active May 5, 2023 15:02
make future with deferred lazily
var cancellables = Set<AnyCancellable>()
func makeFutureWithDeferred() -> AnyPublisher<Int, Never> {
return Deferred {
return Future { promise in
print("Mason🍎🍎🍎: execute")
promise(.success(5))
}
}.eraseToAnyPublisher()
}
@myssun0325
myssun0325 / makeFuture.swift
Last active May 5, 2023 14:55
Make Future
func makeFuture() -> Future<Int, Never> {
return Future { promise in
print("Mason🍎🍎🍎: execute")
promise(.success(5))
}
}
let future = makeFuture() // Mason🍎🍎🍎: execute
@myssun0325
myssun0325 / customDemand.swift
Created May 5, 2020 15:04
SubscriberDemandExample
import Combine
class MasonSubscriber: Subscriber {
typealias Input = String
typealias Failure = Never
var count = 0
func receive(subscription: Subscription) {
@myssun0325
myssun0325 / ProtocolGeneric.swift
Created April 19, 2020 06:04
Protocol Generic
import Foundation
protocol Container {
associatedtype Item
mutating func append(_ item: Item)
var count: Int { get }
subscript(i: Int) -> Item { get }
}
@myssun0325
myssun0325 / DeferSequence.swift
Created April 19, 2020 04:51
defer의 사용과 커스텀 Sequence 구현
struct CountDown: Sequence {
var value: Int
struct CountDownIterator: IteratorProtocol {
var value: Int
mutating func next() -> Int ? {
if value < 0 { return nil }
defer{ value -= 1} // 여기서 사용되는 defer
return value
}
@myssun0325
myssun0325 / DecoratorExample.swift
Created March 30, 2020 14:56
Decorator Pattern Example
import Foundation
/// Ex.1 - 도로 표시 클래스
/*
도로표시
도로표시 + 차선 표시
도로표시 + 교통량 표시
도로표시 + 차선 표시 + 교통량 표시
...
@myssun0325
myssun0325 / rxgesture.swift
Created March 21, 2020 17:04
RxGesture Mocking
//
// MGesture.swift
// ViewPlayground
//
// Created by Youngsun Moon on 2020/03/21.
// Copyright © 2020 YoungSunMoon. All rights reserved.
//
import RxSwift
import RxCocoa
@myssun0325
myssun0325 / defer.swift
Created March 21, 2020 05:22
RxSwift deferred 오퍼레이터 실험
class Car {
var brand: String = "KIA"
func getBrandObservable() -> Observable<String> {
return Observable.just(brand)
}
func getBrandDeferObservable() -> Observable<String> {
return Observable.deferred { [weak self] in
guard let self = self else { return .empty() }
@myssun0325
myssun0325 / Object_week0.swift
Last active February 9, 2020 09:26
말랑말랑한 코드로 바뀌어가는 과정 기록
import Foundation
/*
0. 문제있는 코드
1. TicketSeller의 자율성 높이기
2. Audience의 자율성 높이기
3. Bag의 자율성
4. TicketOffice의 자율성
*/
@myssun0325
myssun0325 / LifeGame.swift
Created March 20, 2019 17:16
using optional
extension Array {
public subscript(safe index: Int) -> Element? {
return indices.contains(index) ? self[index] : nil
}
}
let gen: [[Int]] = [[1,1,0,0,0],
[1,1,0,0,0],