2014-11-28 8 views
2

기본 함수 매개 변수 값과 옵션을 결합하는 깔끔한 방법이 있으므로 함수 호출에 매개 변수가 지정된 경우 매개 변수는 제공된 기본값의 값을 사용하지만 그게 가치가 없다는거야?값이 전달되는 함수 매개 변수의 기본값은 028입니다.

예를 들어

:

class MyObj { 

    var foobar:String 

    init(foo: String?="hello") { 
     self.foobar = foo! 
    } 
} 

let myObj = MyObj() // standard use of default values - don't supply a value at all 

println(myObj.foobar) // prints "hello" as expected when parameter value is not supplied 

var jimbob: String? // defaults to nil 

... 

// supply a value, but it is nil 
let myObj2 = MyObj(foo: jimbob) // <<< this crashes with EXC_BAD_INSTRUCTION due to forced unwrap of nil value 

println(myObj2.foobar) 

... 또는이 같은 생성자에 제공된 값이 존재하는 경우, 회원 상수/변수의 디폴트 값을 제공 할 수있는 가장 좋은 방법입니다 만 변경할 :

let foobar:String = "hello" 

init(foo: String?) { 
    if foo != nil { 
     self.foobar = foo! 
    } 
} 

이 영역에 다른 언어 기능이있는 경우 깔끔한 솔루션이 있어야합니다.

답변

14

방법에 대해 :

class MyObj { 

    var foobar:String 

    init(foo: String?=nil) { 
     self.foobar = foo ?? "hello" 
    } 
} 
+0

훌륭한 솔루션 - 감사합니다! –

+1

"Nil Coalescing Operator"라는 제목의 Apple Swift iBook 섹션에서는'무엇이''무엇이며 내부적으로 어떻게 작동하는지에 대한 훌륭한 설명을 제공합니다. –