在函数中使用实例

时间:2017-10-23 12:41:45

标签: swift

我是Swift的新手,所以我一直在使用Swift Playgrounds应用程序。在2级“两位专家”中,我初步确定了两位专家:

let expert1 = Expert()

let expert2 = Expert()

我想要做的是创建一个函数并将其中的任何一个实例传递给它,访问它的方法等,如:

func actions(who: Item, distance: Int, turn: String) {

for 0 to distance {

        who.moveforward()
}

   ff turn == “Left” {

    who.turnleft()

   } else if turn == “Right” {

     who.turnright()

}

}

谁是专家1或专家2。

我找不到这样做的方法所以不得不两次写相同的动作:

Func actions(who: String, distance: Int, turn:String) {

   if who == “expert1” {

      for 0 to distance {

      expert1.moveforward()

}   Etc

 if who == “expert2” {

      for 0 to distance {

      expert2.moveforward()

}   Etc

有没有办法将实例传递给函数然后执行某些操作,如果它是特定的类?

1 个答案:

答案 0 :(得分:0)

由于您的专家属于Expert类型,因此如果我正确理解了代码,则who方法中的actions参数应为Expert类型。那么Expert的每一个都不需要两个函数。如果我理解正确的话,请告诉我,以及它是否成功。

<强>更新 @Alexander提到你也可以在Expert的扩展名中使用这些方法,如下所示:

extension Expert {
    func actions(distance: Int, turn: String) {
        // Add method code here
    }
}

在扩展中添加方法时,每个Expert对象都可以使用该方法。所以你可以写expert1.actions(1, "Left")或类似的东西。这是关于扩展的官方Swift编程语言指南的link