switchステートメントのデフォルトケースを前ケースを呼ぶことがありますか?

マット・スウィフト:

私が使用するたびにswitch-case10のうち9回- -文を最後のdefaultケースは、ほとんどの場合、それ以上の例ということです。

すなわち。

// WebView Observers
switch webView {
    case webView:
        webViewURLObserver = webView.observe(\.url, options: .new) { [weak self] webView, change in
            let url = "\(String(describing: change.newValue))"
            self?.urlDidChange(urlString: url) }
    case customizerWebView:
        customizerURLObserver = customizerWebView.observe(\.url, options: .new) { [weak self] webView, change in
            let url = "\(String(describing: change.newValue))"
            self?.customizerURLDidChange(urlString: url) }
    case default:
        webViewURLObserver = webView.observe(\.url, options: .new) { [weak self] webView, change in
        let url = "\(String(describing: change.newValue))"
        self?.urlDidChange(urlString: url) }
    }

持ってする方法があるdefault場合にだけ、既存例1を参照するには?

// What I'm trying to accomplish
switch webView {
    case webView:
        [webView Observer Code]
        ...
    case customizerWebView:
        [customizerWebView Observer Code]
        ...
    case default:
        switch.case = webView || switch.case = 0
    }
涙:

可能な解決策は、使用することですフォールスルー

代わりに、思考の:

「デフォルト」の場合:対象の例何かをします

他の方法でそれを考えます:

ターゲットとなるケースの場合は、「デフォルト」を行います。

switch webView {
case customizerWebView:
    customizerURLObserver = customizerWebView.observe(\.url, options: .new) { [weak self] webView, change in
        let url = "\(String(describing: change.newValue))"
        self?.customizerURLDidChange(urlString: url) }
case webView:
        fallthrough
case default:
    webViewURLObserver = webView.observe(\.url, options: .new) { [weak self] webView, change in
    let url = "\(String(describing: change.newValue))"
    self?.urlDidChange(urlString: url) }
}

指摘、ようや@xTwiteDx、あなたは行を削除することができますcase webView: fallthroughあなたが前に特定のコードを実行しない場合fallthroughそれはどのように明示的またはない場合に、あなたはあなたのコードに慣れているか、あなた次第です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=369276&siteId=1