【发布时间】:2018-08-01 00:06:29
【问题描述】:
我对 Swift 还很陌生,所以仍在修补和寻找解决方法。我只是想知道为什么我必须将 Switch 值 chicken.breed, chicken.temper 和复合大小写 Breed.leghorn, Temper.hilarious 括在括号中。 当我删除括号时,请参阅下面的错误
上下文
练习的目标是每当找到与我想要检查的Breed 和Temper 值匹配的有趣鸡时增加chickenOfInterestCount。所以我使用了一个 Switch 语句来执行这些
Exercise.swift
var chickenOfInterestCount = 0
for chicken in chickens {
// check the chicken variables breed and temper enums
switch (chicken.breed, chicken.temper){
case (Breed.leghorn, Temper.hilarious):
chickenOfInterestCount += 1
default:
print("No match")
}
}
print(chickenOfInterestCount)
Chicken.swift
public enum Breed {
case leghorn, rhodeIsland, silkie, plymouthRock
}
public enum Temper {
case friendly, grumpy, hilarious
}
public struct Chicken {
public let breed: Breed
public let temper: Temper
}
public let chickens: [Chicken] = [
Chicken(breed: .leghorn, temper: .friendly),
Chicken(breed: .leghorn, temper: .friendly),
Chicken(breed: .leghorn, temper: .grumpy),
Chicken(breed: .rhodeIsland, temper: .friendly),
Chicken(breed: .leghorn, temper: .hilarious),
Chicken(breed: .rhodeIsland, temper: .friendly),
Chicken(breed: .rhodeIsland, temper: .grumpy),
Chicken(breed: .silkie, temper: .friendly),
Chicken(breed: .rhodeIsland, temper: .grumpy),
Chicken(breed: .silkie, temper: .grumpy),
Chicken(breed: .rhodeIsland, temper: .hilarious),
Chicken(breed: .leghorn, temper: .friendly),
Chicken(breed: .silkie, temper: .friendly),
Chicken(breed: .leghorn, temper: .hilarious),
Chicken(breed: .plymouthRock, temper: .grumpy),
Chicken(breed: .leghorn, temper: .grumpy),
Chicken(breed: .silkie, temper: .grumpy),
Chicken(breed: .plymouthRock, temper: .friendly),
Chicken(breed: .leghorn, temper: .friendly),
Chicken(breed: .leghorn, temper: .friendly),
]
删除括号时出错
error: 19_EnumsAndSwitch.playground:9:25: error: expected '{' after 'switch' subject expression
switch chicken.breed, chicken.temper{
^
error: 19_EnumsAndSwitch.playground:10:9: error: 'case' label can only appear inside a 'switch' statement
case (Breed.leghorn, Temper.hilarious):
^
error: 19_EnumsAndSwitch.playground:12:9: error: 'default' label can only appear inside a 'switch' statement
default:
^
【问题讨论】:
标签: swift enums switch-statement structure