//: Playground - noun: a place where people can play


import Swift


// optional 값이 '있을 수도 , 없을 수도 있음'


let optionalConstant: Int? = nil


// optional이 아닌 곳에 nil을 할당하면 에러가 발생한다.

// let someConstant: Int = nil


// optional = enum + general


/*

enum Optional<Wrapped> : ExpressibleByNilLiteral {

    case none

    case some(Wrapped)

}

*/


let optionalValue: Optional<Int> = nil

let optionalValue2: Int? = nil


// Implicitly Unwrapped Optional

// 암시적 추출 옵셔널

var optionalValue3: Int! = 100


switch optionalValue3 {

case .none:

    print("This Optional variable is nil")

case .some(let value):

    print("Value is \(value)")

}// Value is 100





// 기존 변수처럼 사용 가능

optionalValue3 = optionalValue3 + 1


// nil 할당 가능

optionalValue3 = nil


// 잘못된 접근으로 인한 런타임 오류 발생

// optionalValue3 = optionalValue3 + 1



// ?로 사용하는 사례

var optionalValue4: Int? = 101


switch optionalValue4{

case .none:

    print("This Optional variable is nil")

case .some(let value):

    print("Value is \(value)")

} // Value is 101


// 기존 변수처럼 사용불가 - 옵셔널과 일반 값은 다른 타입이므로 연산불가 , 에러발생

// optionalValue4 = optionalValue4 + 1


// nil할당 가능

 optionalValue4 = nil







'Swift > 기초&문법' 카테고리의 다른 글

스위프트 swift 구조체  (0) 2018.08.20
스위프트 swift 옵셔널 추출  (0) 2018.08.15
스위프트 swift 반복문  (0) 2018.08.14
스위프트 swift 조건문  (0) 2018.08.14
스위프트 swift 함수 고급  (0) 2018.08.14

//: Playground - noun: a place where people can play


import Swift


var integers = [1,2,3]

let people = ["my_name": 10, "my_name2":15, "my_name3": 20 ]


for integer in integers {

    print(integer)

}


// Dictionary의 item은 key와 value로 구성된 튜플 타입입니다.

for (name,age) in people {

    print("\(name): \(age)")

}


while integers.count > 1 {

    integers.removeLast()

}



// 기존 언어의 do-while 구문과 형태/동작이 유사하다.

// repeate안에 실행문이 먼저 실행된 후에 조건이 만족할때까지 수행한다.

repeat{

    integers.removeLast()

}while integers.count > 0


'Swift > 기초&문법' 카테고리의 다른 글

스위프트 swift 옵셔널 추출  (0) 2018.08.15
스위프트 swift 옵셔널  (0) 2018.08.14
스위프트 swift 조건문  (0) 2018.08.14
스위프트 swift 함수 고급  (0) 2018.08.14
스위프트 swift 함수 기본  (0) 2018.08.14

//: Playground - noun: a place where people can play


import Swift


let someInteger = 100


if someInteger < 100 {

    print("100 미만")

} else if someInteger > 100{

    print("100 초과")

} else{

    print("100")

} //100


// 매우 한정적인 값(ex. enum의 case 등)이 비교값이 아닌 한 default 구문은 반드시 작성해야 한다.

switch someInteger{

case 0:

    print("zero")

case 1..<100:

    print("1~99")

case 100:

    print("100")

case 101...Int.max:

    print("over 100")

default:

    print("unknown")

} //100


// 정수 외의 대부분의 기본 타입을 사용할 수 있다.

switch "abc" {

case "a":

    print("a")

case "ab":

    print("ab")

case "abc":

    print("abc")

default:

    print("unknown")

} //abc


'Swift > 기초&문법' 카테고리의 다른 글

스위프트 swift 옵셔널 추출  (0) 2018.08.15
스위프트 swift 옵셔널  (0) 2018.08.14
스위프트 swift 반복문  (0) 2018.08.14
스위프트 swift 함수 고급  (0) 2018.08.14
스위프트 swift 함수 기본  (0) 2018.08.14

//: Playground - noun: a place where people can play


import UIKit

import Swift


func greeting(friend: String, me: String = "myname"){

    print("Hello \(friend)! I'm \(me)")

}


greeting(friend: "friend_name") // Hello friend_name! I'm myname

greeting(friend: "michel", me:"whoami") //Hello michel! I'm whoami



func greeting(to friend: String, from me: String){

    print("Hello \(friend)! I'am \(me)")

}


greeting(to: "friend_name2", from: "myname2") //Hello friend_name2! I'am myname2


//가변 매개변수


//전달 받을 값의 개수를 알기 어려울 때 사용할 수 있다.

// 가변 매개변수는 함수당 하나만 가질 수 있다. 맨 뒤에 위치하는 것이 좋다.


func sayHelloToFriends(me: String, friends: String...) -> String{

    return "Hello \(friends)! I'am \(me)!"

}


print(sayHelloToFriends(me: "myname", friends: "friend_name1", "friend_name2", "friend_name3"))

//Hello ["friend_name1", "friend_name2", "friend_name3"]! I'am myname!


print(sayHelloToFriends(me: "myname2"))

//Hello []! I'am myname2!


// 스위프트는 함수형 프로그래밍 패러다임을 포함하든 다중 패러다임 언어입니다.

// 스위프트의 함수는 일급객체이므로 변수, 상수 등에 저장이 가능하고

// 매개변수를 통해 전달할 수도 있습니다.


var someFunction:(String,String) -> Void = greeting(to:from:)


someFunction("friend_name","my_name") //Hello friend_name! I'am my_name



someFunction = greeting(friend:me:)

someFunction("friend_name2","my_name2") //Hello friend_name2! I'm my_name2


// 타입이 다른 함수는 할당할 수 없다. 가변 매개변수 이기 때문에

// someFuction = sayHelloToFriends(me: friends:)


func runAnother(function: (String, String)-> Void){

    function("a_name","b_name")

}


runAnother(function: greeting(friend:me:)) //Hello a_name! I'm b_name


runAnother(function: someFunction)//Hello a_name! I'm b_name



'Swift > 기초&문법' 카테고리의 다른 글

스위프트 swift 옵셔널 추출  (0) 2018.08.15
스위프트 swift 옵셔널  (0) 2018.08.14
스위프트 swift 반복문  (0) 2018.08.14
스위프트 swift 조건문  (0) 2018.08.14
스위프트 swift 함수 기본  (0) 2018.08.14

//: Playground - noun: a place where people can play


import UIKit

import Swift


//func 함수이름(매개변수1이름 : 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> 반환타입 {

//  함수 구현부

//  return  반환값

//}


func sum(a: Int, b: Int) -> Int {

    return a + b

}


//반환값 없을 경우 Void

func printMyName(name: String) -> Void{

    print(name)

}


//반환값 아래와 같이 생략도 가능

func printYourName(name: String){

    print(name)

}



//매개변수가 없는 함수

func maximumIntegerValue() -> Int {

    return Int.max

}



//매개변수와 반환값이 없는 함수

func hello() -> Void {

    print("hello")

}


func bye() {print("bye")}


sum(a:3 , b:4)


hello()


printMyName(name: "what")


printYourName(name: "your name")


maximumIntegerValue()


hello()


bye()



'Swift > 기초&문법' 카테고리의 다른 글

스위프트 swift 옵셔널 추출  (0) 2018.08.15
스위프트 swift 옵셔널  (0) 2018.08.14
스위프트 swift 반복문  (0) 2018.08.14
스위프트 swift 조건문  (0) 2018.08.14
스위프트 swift 함수 고급  (0) 2018.08.14

+ Recent posts