Swift中的泛型函数

时间:2018-07-07 23:21:27

标签: swift function class

我一直在搜索,但是我发现的大多数答案都比我目前所能理解的要复杂。如果那里有一个教程,我希望获得一个链接,但这是我的问题:

我有多个具有相同机制和形式的函数,但是调用了不同的类。现在,我重复很多相同的代码,并且我想有一种更短的方法来执行此操作。这是一个示例:

func nextQuestion() {

    switch analysisProgress {
    case 7:

        if questionProgress < ownershipQuestionList.list.count {
            questionLabel.fadeTransition(0.4)
            questionLabel.text = ownershipQuestionList.list[questionProgress].question
            definitionText.text = ownershipQuestionList.list[questionProgress].definitions
            } else {
                self.performSegue(withIdentifier: "goToNarrativeVC", sender: nil)
            }

    case 9:

        if questionProgress < discomfortQuestionList.list.count {
            questionLabel.fadeTransition(0.4)
            questionLabel.text = discomfortQuestionList.list[questionProgress].question
            definitionText.text = discomfortQuestionList.list[questionProgress].definitions
            } else {
                self.performSegue(withIdentifier: "goToNarrativeVC", sender: nil)
            }

    case 10:

        if questionProgress < resourceQuestionList.list.count {
            questionLabel.fadeTransition(0.4)
            questionLabel.text = resourceQuestionList.list[questionProgress].question
            definitionText.text = resourceQuestionList.list[questionProgress].definitions
        } else {
            self.performSegue(withIdentifier: "goToNarrativeVC", sender: nil)
        }

    default:
        ()
    }

处理这些情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这似乎与泛型没有任何关系。似乎仅仅是重构以强制执行DRY(不要重复自己)。

  • 如果想法是django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.ownershipQuestionListdiscomfortQuestionList都需要具有某些共同的特定属性,则使它们具有相同的类,或者是它们的子类。相同的类,或者采用通用协议。

  • 如果他们已经这样做了,那么只需将通用代码移到本地函数中,然后每次都调用它即可。