Skip to content

Instantly share code, notes, and snippets.

View godrm's full-sized avatar

Jung Kim godrm

  • Codesquad
  • Seoul, KOREA
  • X @godrm
View GitHub Profile
@godrm
godrm / pascalTriangle.swift
Created July 11, 2017 00:00
Functional Pascal Triangle
func makePascalTriangle(numOfRows: Int) -> ([[Int]]) {
func getNextRow(_ arr: [Int]) -> [Int] {
let a = zip([0]+arr, arr+[0])
return a.map({
(e: (Int, Int)) -> Int in
e.0 + e.1
})
}
func helper(_ countDown: Int, results: [[Int]]) -> (Int, [[Int]]) {
var x : Int? = 10
//arguments
func foo(arg : Int?) {
guard let arg = arg else {
return
}
print(arg)
}
foo(arg:x)
@godrm
godrm / HugeLadderGame.swift
Last active September 8, 2023 10:35
사다라게임 recfatoring
struct HugeLadderGame {
struct LadderPlayer {
var name = ""
}
struct InputView {
static func readHeight() -> Int {
print("사다리 높이를 입력해주세요.")
let height = readLine() ?? ""
return Int(height) ?? 0
}
@godrm
godrm / swift_api_guideline.md
Last active March 27, 2024 05:15
스위프트 API 가이드라인

1. 스타일/문법 리뷰

1-1 스위프트 API 디자인 가이드라인

https://swift.org/documentation/api-design-guidelines/

  • 사용할 때 기준으로 명확하게 작성하는 게 가장 중요한 지향점이다. 메소드나 프로퍼티 같은 개발 요소는 한 번만 선언하고 반복적으로 사용한다. API를 만들 때는 사용하기 명확하고 편하게 만들어야 한다. 설계를 검증할 때 선언 부분을 읽는 것만으로는 부족하다. 그 대신 사용하는 상황에서 맥락에 맞고 명확한 지 늘 고려해야 한다.

  • 명확한 표현이 압축한 간결성보다 더 중요하다. 스위프트 코드는 압축해서 간결하게 작성할 수 있지만, 단지 글자수를 줄여서 가장 짧은 코드를 만드는 게 목표는 아니다. 스위프트 코드의 간결성은 자연스럽게 반복적으로 재사용하는 코드(boilerplate)를 줄이는 기능과 강한 타입 시스템의 부수효과로 드러날 뿐이다.

import Foundation
class ReadValue {
var successClosure : ((String)->())? = nil
var value : String = "" {
didSet {
if let closure = successClosure {
closure(value)
}
}
}
class ReadValue {
private var thread : Thread? = nil
init(with handler: @escaping (String) -> ()) {
thread = Thread(block: {
while(true) {
let value = readLine() ?? ""
handler(value)
}
})
thread?.start()
//
// LadderMasonTest.swift
// LadderMasonTest
//
// Created by JK on 05/04/2018.
// Copyright © 2018 JK. All rights reserved.
//
import XCTest
//
// main.swift
// HelloOperator
//
// Created by JK on 09/04/2018.
// Copyright © 2018 JK. All rights reserved.
//
import Foundation
//
// MyCustomView.swift
// CustomView
//
// Created by JK on 12/04/2018.
// Copyright © 2018 JK. All rights reserved.
//
import UIKit
func countByCharacter(_ value: String) -> [Character: Int] {
var countMap = [Character: Int]()
for char in value {
let count = countMap[char] ?? 0
countMap[char] = count + 1
}
return countMap
}