반응형

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

옵셔널은 잘 끝내셨나요?

이번 시간에는 함수에 대해서 겉만 살짝 다루보도록 하겠습니다.

저번에 이용한 코드를 그대로 가져와서, 

응용해보도록하겠습니다 :)






let Movie : String = "Death Note"


var ratings : [Double]? = nil


var officialUrl = "www.deathnote.com"


ratings = [4.5, 3.5, 2.5, 1.5, 4.5, 0.5]


// ratings 값을 초기화시켜보도록하겠습니다!

func funcratings (history:[Double]) -> (average:Double , min:Double, max: Double) {

    

    // history:[Double] 더블타입으로 평균, 최소값, 최대값을 지정해준다.


var sum = 0.0, min = history[0], max = history[0]


// sum 모든 값을 더할 것이고~


    // min max 히스토리의 첫번째 값을 가진다!


    for value in history {


    // for~ in문을 돌려봅시다!


        if min > value { min = value }


    // 만약 최소값이 값보다 크다면, 값이 최소값을 가진다.

    

        if max < value { max = value }


    // 최대값이 값보다 작으면 값이 최대값이 된다.

    

        sum += value


    // sum에는 모든 값들을 더한다.

    

    }


let average = sum/Double(history.count)


// 평균은 sum history 카운트 갯수로 나누어서 평균값을 구한다.

        

    return (average, min, max)

// 그리고 return값으로 평균 최소 최대값을 반환한다!

    

}



var movieInfo: String = "\(Movie)"


if let conratings = ratings {

    

    let history = funcratings(conratings)

    

    // 이제 history funcratings이며! funcratings conratings이다!

    

    movieInfo += "has \(conratings.count) ratings. \r\n average is \(history.average) from \(history.min) to \(history.max) ."

 

    // \r\n 한줄띄우기! 백슬레쉬에요 저번에 정슬레쉬로 설명드렸는데,

    // 사실은 백슬래쉬였답니다..어찌됬건

       

}

movieInfo += "\r\n let's contact our page : \(officialUrl)"




print("\(movieInfo)")



Death Notehas 6 ratings. 

 average is 2.83333333333333 from 0.5 to 4.5 .

 let's contact our page : www.deathnote.com 


//라는 최종적인 결과를 표출하였습니다.


// 함수는 일종의 도구이며,


// 본인 스스로에게 적합한 도구를 만들어, 적절한 시기에 사용하시면 됩니다!


// 함수를 얼마나 잘 만드냐, 적절하게 잘 설계를 하냐는 다~ 개발자의 재량이며, 가치입니다.


// 고로, 열심히 공부하여, 우리의 가치를 증진시켜봅시다 :)))


반응형
by 발전소장 에르 :) 2016. 5. 8. 00:00
반응형

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

이번 시간에는 옵셔널의 마지막편입니다!

Force Unwrapping

Optional Binding

Implicitly Unwrapped Optional 

위 세가지 중  옵셔널과 임플릭시티 언렙 옵셔널에 대해서 알아보겠습니다:)

지난번 다뤄보았던 코드들 그대로 가지고 계신가요?!

시작해보죠.





if let conratings = ratings {

    

    //  if let conratings = ratings 새로운 상수 선언 대입!

    

    movieInfo += "has \(conratings.count) ratings."

    

    //ratings.count 또한 conratings.count 변경!

}


if let conofficial = officialUrl { // 홈페이지주소가 값이 아니라면,


  movieInfo += "/r/n let's contact our page : \(conofficial)"

    

    // 무비인포에 위의 문장을 더한다. /r/n 한줄 띄움임.

    

}


print("\(movieInfo)")


// 포스언렙핑 말고 다른 방법도 있음!

// Optional binding : if var , if let 으로 옵셔널사용을 최소화하기 위해 변수나 상수를 새로 만드는 것임.


var officialUrl : String! = nil


// 처음에는 nil이지만 나중에 어떻게든 무조건 값을 받을 경우는 implicity unwrapped optional방식을 사용하여

     

     타입뒤에 ! 붙임! 그렇게 되면?!

officialUrl = "www.deathnote.com"


// if let conofficial = officialUrl { // 홈페이지주소가 값이 아니라면,


//  movieInfo += "/r/n let's contact our page : \(conofficial)"

    

    // 무비인포에 위의 문장을 더한다. /r/n 한줄 띄움임.

    

// }


movieInfo += "/r/n let's contact our page : \(officialUrl)"


// 위에 if let conofficial 필요없이 바로 옵셔널이 아닌것 마냥 쉽게 사용이     가능함!


print("\(movieInfo)")


// 포스언렙핑 말고 다른 방법도 있음!

// Optional binding : if var , if let 으로 옵셔널사용을 최소화하기 위해 변수나 상수를 새로 만드는 것임.


// 마지막으로 Implicitly Unwarrped Optional 있음!

// 옵셔널 선언 나중에는 반드시 값을 가지게 값에게 방법을 사용할 있음!

// 보다 효과적임.


// 옵셔널은 스위프트에서 매우 중요한 부분이니, 다시 한번 제대로 되새겨주세요!


반응형
by 발전소장 에르 :) 2016. 5. 7. 21:50
| 1 |