我是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
有没有办法将实例传递给函数然后执行某些操作,如果它是特定的类?
答案 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。