为什么需要以下枚举" KW"被声明为类型" Int"。否则,此代码片段不会编译。
enum KW: Int8 {case XXXX=0,NNNR,NRNN,NNNB,NBNN,NRNB,NBNR,NNRB,RBNN,NNNN} //Edge values
struct KSet {
var normal: [KW]
}
var checkit = [Int8](count:10, repeatedValue: 0)
func initOne( index: Int8, k: [KW]) {
checkit[ k[0].rawValue] += 1
checkit[ k[1].rawValue] += 1
checkit[ k[2].rawValue] += 1
checkit[ k[3].rawValue] += 1
}
initOne( 0, k: [.XXXX, .XXXX, .XXXX, .XXXX]) // one card 4 edges
答案 0 :(得分:1)
问题是您无法使用Int8
索引数组。您需要使用Int
。您可以将Int8
转换为Int
,如下所示:
func initOne( index: Int8, k: [KW]) {
checkit[ Int(k[0].rawValue)] += 1
checkit[ Int(k[1].rawValue)] += 1
checkit[ Int(k[2].rawValue)] += 1
checkit[ Int(k[3].rawValue)] += 1
}
或者只是让enum
使用Int
。