11.9 同步练习
- 在Swift中具有面向对象特征的数据类型有( )。
A. 枚举 B. 元组 C. 结构体 D. 类
判断正误:在Swift中,类具有面向对象的基本特征,即封装性、继承性和多态性。
判断正误:Swift中的枚举、类和结构体都具有继承性。
有下列枚举类型代码:
enum ProductCategory {case Washers , Dryers, Toasters}var product = ProductCategory.Toasters
枚举类型能够与switch语句结合使用,下列使用switch语句不正确的是( )。
A.
switch product {case .Washers:println("洗衣机")case .Dryers :println("烘干机")default:println("烤箱")}
B.
switch product {case .Washers:println("洗衣机")case .Dryers :println("烘干机")case .Toasters :println("烤箱")}
C.
switch product {case .Washers:println("洗衣机")case .Dryers :println("烘干机")}
D.
switch product {case .Washers:println("洗衣机")default:println("烤箱")}
- 有下列枚举类型代码:
enum ProductCategory : String {case Washers = "washers", Dryers = "dryers", Toasters = "toasters"}
下列代码中能够成功输出"烤箱"的是( )。
A.
if (product.toRaw() == "toasters") {println("烤箱")}
B.
if (product.toRaw() == .Toasters) {println("烤箱")}
C.
if (product == .Toasters) {println("烤箱")}
D.
if (product == "toasters") {println("烤箱")}
- 下列代码是在C语言中定义了联合类型的示例。
typedef union{char c;int a;double b;} Number;
请把它改造成为Swift代码。
判断正误:Swift中枚举是值类型,而类和结构体是引用类型。
判断正误:Swift中结构体有属性、方法、下标、构造器和析构器。
判断正误:由于具有面对对象的特征,所以枚举、类和结构体都可以使用恒等号
===进行比较。下列有关类型嵌套正确的是( )。
A.
class a {class b {}enum c {case c(Character)}struct d {}}
B.
enum Number {case c(Character)case a(Int)case b(Double)class d {}struct e {}}
C.
struct c {class b {}}
D.
struct c1 {class b {class a {}}}
- 运行下列代码的输出结果是( )。
var cod : String? = "a fish"var dab : String? = codprintln("cod == \(cod)")cod = nilprintln("cod == \(cod)")println("dab == \(dab)")
A.
cod == a fishcod == nildab == nil
B.
cod == nilcod == nildab == a fish
C.
cod == a fishcod == nildab == a fish
D.
cod == nilcod == nildab == nil
- 下列语句能够正确执行的是( )。
A.
var optionalCod: Stringif optionalCod{println("uppercase optionalCod == \(optionalCod.uppercaseString)")}else{println("optionalCod is nil")}
B.
var optionalCod: String?if optionalCod{println("uppercase optionalCod == \(optionalCod.uppercaseString)")}else{println("optionalCod is nil")}
C.
var optionalCod: String?if optionalCod{println("uppercase optionalCod == \(optionalCod!.uppercaseString)")}else{println("optionalCod is nil")}
D.
var optionalCod: String!if optionalCod{println("uppercase optionalCod == \(optionalCod.uppercaseString)")}else{println("optionalCod is nil")}
- 若有以下多个有关联关系类的定义:
class Person {var residence: Residence?}class Residence {var rooms = [Room]()var numberOfRooms: Int {return rooms.count}subscript(i: Int) -> Room {return rooms[i]}func printNumberOfRooms() {println("The number of rooms is \(numberOfRooms)")}var address: Address?}class Room {let name: Stringinit(name: String) { self.name = name }}class Address {var buildingName: String?var buildingNumber: String?var street: String?func buildingIdentifier() -> String? {if buildingName {return buildingName} else if buildingNumber {return buildingNumber} else {return nil}}}
以下是类的访问代码,执行如下代码,说法正确的是( )。
let john = Person()let johnsStreet1 = john.residence?.address?.street ①let johnsStreet2 = john.residence!.address!.street ②
A. 程序有编译错误 B. 没有编译错误,但有运行错误
C. 代码第①行能够执行 D. 代码第②行不能执行
