enum FooEnum: Int {
case fooEnumCase = 13512
case fooEnumCase2 = 425156
}
class FooClass {
public func myFunction(chosenEnumCase: fooEnum) -> String {
/* Logic */
}
}
fooClass.myFunction(fooEnum.fooEnumCase)
我遇到了错误:
FooEnum
不能转换为FooClass
此代码有什么问题?
答案 0 :(得分:1)
要解释该错误消息,我们考虑使用@After
:
fooClass.myFunction
该函数需要一个let f: (fooClass) -> ((fooEnum) -> String) = fooClass.myFunction
实例,并返回另一个函数fooClass
。而在您的代码中,该类型为((fooEnum) -> String)
类型的实例。
在实例上调用该函数:
fooEnum
或将let myInstance = fooClass()
myInstance.myFunction(chosenEnumCase: fooEnum.fooEnumCase)
设为类函数:
myFunction
PS:要遵守Swift的命名约定,请使用public class func myFunction(chosenEnumCase: fooEnum) -> String
和FooEnum
。
答案 1 :(得分:1)
首先,使用小写的类名很难阅读代码。
两个问题:
使用这种语法,该方法应该是类函数。
public static func myFunction(chosenEnumCase: FooEnum) -> String
哪个会引发新的错误
呼叫中缺少自变量标签'chosenEnumCase:'
,您必须添加参数标签:
enum FooEnum: Int {
case fooEnumCase = 13512
case fooEnumCase2 = 425156
}
class FooClass {
public static func myFunction(chosenEnumCase: FooEnum) -> String {
//logic
}
}
FooClass.myFunction(chosenEnumCase: FooEnum.fooEnumCase)