2016-12-22 46 views
0

功能特定類型的我想是這樣的: 如何實現迅速

enum ArgType { case Case1, case Case2 } 
func foo(arg: ArgType) { 
    // code 
} 

上面的代碼工作,但ArgType僅用於功能foo,所以我更喜歡以某種方式在「限制」函數的範圍,我應該怎麼做?


func foo(arg: T) where T = enum _ { case Case1, case Case2 } { 
    // code 
} 
// this doesn't compile, I put this here just for an example for what I want 
+0

我覺得這個問題有點不清楚,你想達到什麼目的? –

+0

@AhmadF,對不起。考慮到問題中的代碼,我可以編寫另一個函數'bar(arg:ArgType)',因爲'ArgType'對bar也是可見的,我想要阻止它。 –

回答

0

您不能標記Enum私有並在類範圍外使用它。如果你想封裝枚舉,也許在類/結構的範圍內定義它。

struct Identifier { 
    enum Cell { 
     case Base 
     case Home 
    } 

    func getIdentifier(identifier: Cell) -> String { 
     return "An Identifier" 
    } 
} 
+0

是的,使用class/struct/enum封裝是一種解決方法! –

0

,如果它被限制的功能。 PPL怎麼稱呼它?
[IM知道這是沒有答案]

答案是:
沒有機械師來限制類型的唯一功能類型。
(也許該函數是私有的,並標記私有類型文件可以幫助嗎?)

+0

這個想法就像類指定的類型:我可以在類Bar中聲明一個類型'Foo',而其他人只能通過鍵入'Bar.Foo'來明確指出'Foo'類型是有意義的Bar'的上下文。儘管做事私人作品,它不能滿足我的強制... –