Use JavaScript more strictly (feat. TypeScript, flow)Mark Lee
[DevFest Seoul 2018] JavaScript 에 Type System 을 도입하는 대표적인 방법인 Flow 와 TypeScript 를 알아본다. TypeScript 의 strict 모드를 이용해서 좀 더 견고한 JavaScript 어플리케이션을 만드는 방법에 대해 공유한다.
Use JavaScript more strictly (feat. TypeScript, flow)Mark Lee
[DevFest Seoul 2018] JavaScript 에 Type System 을 도입하는 대표적인 방법인 Flow 와 TypeScript 를 알아본다. TypeScript 의 strict 모드를 이용해서 좀 더 견고한 JavaScript 어플리케이션을 만드는 방법에 대해 공유한다.
본 강좌에서는 클로저에 대해 알아보도록 하겠습니다. 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경을 모두 포함한 객체로정의할 수 있습니다. 또한 클로저는 func와 함수이름이 생략된 경량의 함수객체로 클로저 표현을 통해 문장릉 짧고 간단하게 만들 수 있습니다.
Youtube
- https://youtu.be/0bIRlDCH8kU
박교수의 Swift강좌10-열거형과 구조체, 클래스에 대하여 이론적인 설명과 예제 프로그램을 통해 살펴보도록 하겠습니다. Swift의 열거형은 튜플값을 멤버로 가질 수 있으므로 C/C++보다 풍부하고 강력한 기능이 가능합니다. 또한 클래스와 구조체 모두 메소드를 가질 수 있다는 점이 C++와는 다른 점입니다.
Youtube
- https://www.youtube.com/watch?v=TykLyvMsGho
This document discusses Python container and collection data types for storing data. It covers core collections like lists, dictionaries, sets and tuples. It also covers advanced collections like ChainMap, Counter, DefaultDict, OrderedDict, Deque, Heapq, Named Tuple and Enum. It explains the time complexity of common operations on these data types, which is often O(1) but can be O(n) or O(n^2) in some cases. It provides examples of Big O notation and describes the purpose and usage of each data type.
WWDC2016 스터디 공유 발표 - 공유용
스터디에서 발표한 자료라, 사진 등의 개인정보와 스터디내의 프로젝트 내용이 포함될 수 있는 내용은 모두 삭제하였습니다. Labs와 코드 레벨의 내용 모두 삭제하였습니다.
스터디원이 발표 원본을 원하시는 경우는 별도 연락주시면 제공하겠습니다.
The document discusses a hybrid approach to developing an AI agent for the Ms. Pac-Man video game. The hybrid approach uses both hand-coded rules based on Dijkstra's algorithm and evolved artificial neural networks. The hand-coded rules aim to make optimal choices in predictable situations, while the neural networks help deal with unpredictable circumstances. An experiment showed the hybrid agent achieved higher maximum and average scores than agents using either approach alone. The hybrid was able to leverage the advantages of both rule-based and learning-based approaches.
4. 함수 호출
Arg Label파라메터함수명
반환값이 있는 함수는 return값을 받지 않으면 warning (Swift 3)
반환값을 사용하지 않을때는 명시적으로 사용하지 않음을 표기
‘_’ 는 사용하지 않는 변수 등의 이름을 위해 정의된 특별한 키워드
(이따 또 나옵니다)
6. 함수 선언/정의: 함수 파라메터는 상수로 취급
반환값 타입
참고: Swift 2.x까지는 var 키워드를 파라메터 앞에 붙이면 함수 파라메터를 변경 가능한
변수로 사용 가능
Swift 3에서는 var 키워드 허용하지 않음
7. 함수 선언/정의: Argument Labels
함수를 사용할때 붙는 arg1과 arg2의 정체?Argument Labels
Default Argument Label: Parameter Name
argument label을 생략하면 argument label은 파라메터 이
름과 동일
argument label을 파라메터 이름과 다르게 사용하고 싶으면,
파라메터 이름 앞에 argument Label을 적으면됨
함수를 호출할때 변경한 argument label을 붙여야함
8. 함수 선언/정의: Argument Labels (계속)
argument label을 파라메터 이름과 다르게 사용하고 싶으면,
파라메터 이름 앞에 argument Label을 적으면됨
함수를 호출할때 변경한 argument label을 붙여야함
‘_’ 키워드를 argument label에 붙이면 함수 호출시 argument
label 생략됨
참고: Swift 2.x 버전까지는 Objective-C의 사용 습관을 이어받아 첫번째 argument
label은 암묵적으로 생략됨.
9. 함수 선언/정의: Argument Labels (계속)
• Argument Labels을 통해 얻을 수 있는 이점? 명료함과 가독성을
높일 수 있음
• Argument Labels 수정을 통해 얻을 수 있는 이점? 문장처럼 함수
설계 가능
• 예를 들어,
14. Nested functions
• 함수 안에 함수 사용 가능
• 함수도 class와 struct 와 같은 타입
• 함수 안에 함수는 부모 함수의 변수를 참조 가능 (마치, class와
struct의 멤버 변수처럼)
함수 안에 함수 사
용 가능
15. Closures
• Clousure 지원
• Clousures? self-contained blocks of functionality that can be
passed around and used in your code
• 프로그램 상 전달 가능한 코드 블럭
• 함수도 Clousures의 종류 ==> 그러니까 앞에서 말한 함수에 대한
특징들이 적용됨
• 실제 Cocoa/Cocoa Touch API 사용시 Clousures를 많이 사용하게
됨
23. Closures 사용 예시 (계속)
코드 줄이는건 신났는데…
closure 내의 코드 량이 많으면 어떡함?
24. Trailing closures
• closure의 코드 량이 많아지면 함수 선언이 복잡해짐. 끝을 따라가
기 힘듦
• closure 파라메터가 함수의 마지막 파라메터로 오는 경우, 함수 선
언을 모두 마친 이후에 기재 가능
• 예를 들어,
예전 버전. 이것보다 선언이 명확하고 깔
끔해짐