반응형

안녕하세요~ 에르의 생각발전소입니다! :)

이번 시간에는 스위프트의 꽃!

옵셔널을 빼고 스위프트를 안다고 절대 할 수 없죠!?

드디어 이번 시간에는 Optional 에 대해서 알아보겠습니다!


시작해볼게요 :)










// 스위프트의 꽃인, optional


// Nil 값이 없는 무의 상태를 의미함.


// 특히 0 NIL 개념은 다름. 0 정수가 있다는 얘기임.


// Optuonal : 프로그래밍의 안전벨트, 실행 Nil 돠어 프로그램 크래쉬를 일으킬 있는 변수를 특별히 관리한다는 것임


// 스위프트의 장점이자, 단점인데 결론적으론 좋은 장점임!


// 옵셔널을 만드는 방법은 TYPE뒤에 ? 붙이면 .


// EX: NAME:TYPE? = VALUE


let Movie : String = "Death Note"


// 데스노트라는 값은 가진 스트링타입의 무비네임을 가짐 변수임.



var ratings : [Double]? = nil


// 평점을 더블타입으로 nil값을 주어서 선언함.

var ratings : [Double]? = nil


// 평점을 더블타입으로 nil값을 주어서 선언함.


// 허나 포스 언렙핑을 사용했음에도 불구하고 코드가 확실히 죽어버림.

왜냐하면, 값이 결국은 없기 때문임.

고로 이 방법을 사용하면, 빠른 길을 머어어어어얼리 돌아가야하는 결과가 나옴. :(


officialUrl = "www.deathnote.com"


// 일단 홈페이지 주소를 부여함.


var movieInfo: String = "\(Movie)"


// 무비지인포라는 스트링타입의 변수를 선언하고 무비인포는 무비라고 초기화함.


// ratings != nil 에서 ratings는 nil이 아니다! 라는 연산자입니다! (!= NOT)

// 그래서 ratings는 nil값이 아니라고 선언을 했으니!! 문제가 없음!


// /r/n는 한줄 띄움임! 앞으로 자주 사용하실거에요 :)

// officialUrl != nil 이 nil값이 아니라면,

movieInfo에 위 문장을 더한다~!


// 앞에 Optional이 보기 싫고 불완전하게 코딩이 되었으니!


// 짜잔!. officialUrl에 ! 를 붙여서 포스 언렙핑을 시켜서

// 완변히 만들어줍니다 :)

다음 시간에는 ~ ? Optional binding 과 Implicity Wrapped Optional 에 대해서 

다루어보도록하겠습니다!

2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift 구문편! if, for, switch 까지!


2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift Collection: Dictionary 와 Set


2016/04/25 - [프로그래밍발전소 ♫] - 160424 collection Array 편 :)


2016/04/23 - [프로그래밍발전소 ♫] - 160423 Swift Tuple, Typealias 편 ! :) 튜플과 타입얼라이어스


2016/04/20 - [프로그래밍발전소 ♫] - 160419 Swift part.2 String과 Numbers에 대해서


2016/04/19 - [프로그래밍발전소 ♫] - 160418 swift 란? 스위프트 언어에 대해서 알아봅시다. let과 var편



반응형
by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2016. 5. 7. 03:23
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

이번 시간에는 Tuple 과 Typealias를 다뤄볼 건데요.

스위프트의 장점이고 장점인 만큼 많이 활용되는 파트이니,

주의깊게 살펴봐주세요!

자! 그럼 시작해보겠습니다.






상수로된 튜플인 time1을 생성하였고 2, 43, 1 이란 값들을 괄호 묶었습니다.   (사진의 오타는 애교로..)

2란 값을 불러오고자하면 0을 42이라는 값을 불러오고자하면 1을 쓰시면 됩니다.

대게 첫번째 숫자니 1부터 시작할거라 생각을 하시고 실수를 많이들 하시는데,

시작은 0 부터 입니다! 참고해주세요!

튜플의 값에는 플롯, 스트링, 섞여들어가도 무방한데요. 

예로 하나 만들어보았습니다.

language라는 스트링 타입의 값과. 11이라는 정수값은 가진 값이 ex라는 튜플안에 속해있는 모습니다.

똑같이 0,1,2 순번으로 시작됩니다.

물론 0, 1, 2 대신 문자로 변경이 가능한데요.

위 화면은 0,1,2 대신 hour, min, sec 로 변환시킨 모습입니다.

상황에 맞게 바꾼다면, 더 유용하겠죠?

튜플을 튜플로 또 묶는 건데요.

각 3개의 값을 가지고 있는 두 개의 튜플을 하나의 다른 튜플로 묶은 코드입니다.

일종의 사슬을 만들어준다고나 할까요?

begin이 time1, done이 time2 를 가지고 있는 모습입니다.



그럼 묶여있는 값중 최하위 값을 불러오고 싶다~고 하시면 

file:///Users/Logan/Desktop/Screen%20Shot%202016-04-22%20at%2011.05.56%20pm 이런 컴퓨터디렉토리 주소처럼


done에 있는 hour값을 불러야겠죠?

done.hour은!?

done = > time2

time2:( hour:Int, min:int, sec:int ) = ( 1, 51, 15 ) => hour => 1

이라는 값이 나오게되겠죠?



이번에는 타입 얼라이어스입니다!

위 화면은 타입 얼라이어스를 설명하는 글입니다. 

typealias AudioSample = UInt16 이다.

var maxAmplitudeFound = AudioSample.min 이면, 0이다.

왜냐하면 UInt16의 최저값은 0이니까요.

이 처럼 타입 얼라이어스는 다른 이름으로 존재하는 값을 정의합니다.

time 이라는 타얼을 만들어 (h:int, m:int, s:int) 라는 타입을 정의하

period 라는 타얼을 만들어 start:time, end:time으로 타입을 정의했습니다.

period 타얼 안에 time의 타입이 들어갔지요? 



let now:period = ( (6,20,13) , (11,2,56) ) 로 start:time에 값을 주고 end:time에도 값을 각각 부여했습니다.


그럼 time이 start와 end로 된 period안에 들어가있고 start = 6,20,13이며, end는 11,2,56이네요.


print("we played a game until \(now.end.h) today. ") 라는 코드를 입력해


값을 불러오고자한다면, 추적해봅시다!


 now =  period, period =  (start:time. end:time) , end:time = 11,2,56 = h:11 , m:2, s:56 = h ==> 11 


이라는 결론에 도달하게 되는거죠!


이해가 되셨는지요!


쉽쥬?

반응형
by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2016. 4. 23. 09:00
  • 학생 2018.01.02 14:44 ADDR EDIT/DEL REPLY

    typealias 에 대해서 궁금했는데 이해가 잘 되었습니다. 설명이 참 쉽고 핵심을 잘 알려주셔서 감사합니다.

| 1 |