Swift 在函数中使用实例
我是Swift新手,所以我一直在使用Swift游乐场应用程序。在2级“两位专家”中,我初始化了两位专家:Swift 在函数中使用实例,swift,Swift,我是Swift新手,所以我一直在使用Swift游乐场应用程序。在2级“两位专家”中,我初始化了两位专家: let expert1 = Expert() let expert2 = Expert() 我想做的是创建一个函数并将任何实例传递给它,访问它的方法等等,比如: func actions(who: Item, distance: Int, turn: String) { for 0 to distance { who.moveforward() } ff tu
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
是否有一种方法可以将实例传递到函数中,然后执行特定类的特定操作?由于您的专家属于
Expert
类型,因此如果我正确理解代码,那么actions
方法中的who
参数应该属于Expert
类型。然后,您不需要为每个Expert
s使用两个函数。让我知道我是否正确地理解了你,以及它是否有效
更新
@Alexander提到,您也可以在Expert
的扩展中使用这些方法,如下所示:
extension Expert {
func actions(distance: Int, turn: String) {
// Add method code here
}
}
在扩展中添加方法时,每个
Expert
对象都可以使用该方法。所以你可以写expert1.actions(1,“左”)
或者类似的东西。下面是官方的Swift编程语言指南中关于扩展的一部分。我试图格式化您的代码,但有些大括号仍然没有打开。请尝试修复缩进。为什么所有内容都以大写字母开头,Let
,Func
,If
,Else
和For
-看起来像****一样奇怪。对使用let
、func
、if
、else
和。这是一个非常草率的问题。最好删除“who”参数,并在专家
的扩展中使用这些方法。是的,我同意,但是我的答案基于最小的变化,这将使代码编译,因为OP对Swift来说是新的。“因为OP对Swift来说是新的。”这似乎是一个很好的理由,可以花点时间教他们关于扩展的知识。