11.9 同步练习

  1. 在Swift中具有面向对象特征的数据类型有(  )。

A. 枚举   B. 元组   C. 结构体   D. 类

  1. 判断正误:在Swift中,类具有面向对象的基本特征,即封装性、继承性和多态性。

  2. 判断正误:Swift中的枚举、类和结构体都具有继承性。

  3. 有下列枚举类型代码:

  1. enum ProductCategory {
  2. case Washers , Dryers, Toasters
  3. }
  4. var product = ProductCategory.Toasters

枚举类型能够与switch语句结合使用,下列使用switch语句不正确的是(  )。

A.

  1. switch product {
  2. case .Washers:
  3. println("洗衣机")
  4. case .Dryers :
  5. println("烘干机")
  6. default:
  7. println("烤箱")
  8. }

B.

  1. switch product {
  2. case .Washers:
  3. println("洗衣机")
  4. case .Dryers :
  5. println("烘干机")
  6. case .Toasters :
  7. println("烤箱")
  8. }

C.

  1. switch product {
  2. case .Washers:
  3. println("洗衣机")
  4. case .Dryers :
  5. println("烘干机")
  6. }

D.

  1. switch product {
  2. case .Washers:
  3. println("洗衣机")
  4. default:
  5. println("烤箱")
  6. }
  1. 有下列枚举类型代码:
  1. enum ProductCategory : String {
  2. case Washers = "washers", Dryers = "dryers", Toasters = "toasters"
  3. }

下列代码中能够成功输出"烤箱"的是(  )。

A.

  1. if (product.toRaw() == "toasters") {
  2. println("烤箱")
  3. }

B.

  1. if (product.toRaw() == .Toasters) {
  2. println("烤箱")
  3. }

C.

  1. if (product == .Toasters) {
  2. println("烤箱")
  3. }

D.

  1. if (product == "toasters") {
  2. println("烤箱")
  3. }
  1. 下列代码是在C语言中定义了联合类型的示例。
  1. typedef union{
  2. char c;
  3. int a;
  4. double b;
  5. } Number;

请把它改造成为Swift代码。

  1. 判断正误:Swift中枚举是值类型,而类和结构体是引用类型。

  2. 判断正误:Swift中结构体有属性、方法、下标、构造器和析构器。

  3. 判断正误:由于具有面对对象的特征,所以枚举、类和结构体都可以使用恒等号===进行比较。

  4. 下列有关类型嵌套正确的是(  )。

A.

  1. class a {
  2. class b {
  3. }
  4. enum c {
  5. case c(Character)
  6. }
  7. struct d {
  8. }
  9. }

B.

  1. enum Number {
  2. case c(Character)
  3. case a(Int)
  4. case b(Double)
  5. class d {
  6. }
  7. struct e {
  8. }
  9. }

C.

  1. struct c {
  2. class b {
  3. }
  4. }

D.

  1. struct c1 {
  2. class b {
  3. class a {
  4. }
  5. }
  6. }
  1. 运行下列代码的输出结果是(  )。
  1. var cod : String? = "a fish"
  2. var dab : String? = cod
  3. println("cod == \(cod)")
  4. cod = nil
  5. println("cod == \(cod)")
  6. println("dab == \(dab)")

A.

  1. cod == a fish
  2. cod == nil
  3. dab == nil

B.

  1. cod == nil
  2. cod == nil
  3. dab == a fish

C.

  1. cod == a fish
  2. cod == nil
  3. dab == a fish

D.

  1. cod == nil
  2. cod == nil
  3. dab == nil
  1. 下列语句能够正确执行的是(  )。

A.

  1. var optionalCod: String
  2. if optionalCod
  3. {
  4. println("uppercase optionalCod == \(optionalCod.uppercaseString)")
  5. }
  6. else
  7. {
  8. println("optionalCod is nil")
  9. }

B.

  1. var optionalCod: String?
  2. if optionalCod
  3. {
  4. println("uppercase optionalCod == \(optionalCod.uppercaseString)")
  5. }
  6. else
  7. {
  8. println("optionalCod is nil")
  9. }

C.

  1. var optionalCod: String?
  2. if optionalCod
  3. {
  4. println("uppercase optionalCod == \(optionalCod!.uppercaseString)")
  5. }
  6. else
  7. {
  8. println("optionalCod is nil")
  9. }

D.

  1. var optionalCod: String!
  2. if optionalCod
  3. {
  4. println("uppercase optionalCod == \(optionalCod.uppercaseString)")
  5. }
  6. else
  7. {
  8. println("optionalCod is nil")
  9. }
  1. 若有以下多个有关联关系类的定义:
  1. class Person {
  2. var residence: Residence?
  3. }
  4. class Residence {
  5. var rooms = [Room]()
  6. var numberOfRooms: Int {
  7. return rooms.count
  8. }
  9. subscript(i: Int) -> Room {
  10. return rooms[i]
  11. }
  12. func printNumberOfRooms() {
  13. println("The number of rooms is \(numberOfRooms)")
  14. }
  15. var address: Address?
  16. }
  17. class Room {
  18. let name: String
  19. init(name: String) { self.name = name }
  20. }
  21. class Address {
  22. var buildingName: String?
  23. var buildingNumber: String?
  24. var street: String?
  25. func buildingIdentifier() -> String? {
  26. if buildingName {
  27. return buildingName
  28. } else if buildingNumber {
  29. return buildingNumber
  30. } else {
  31. return nil
  32. }
  33. }
  34. }

以下是类的访问代码,执行如下代码,说法正确的是(  )。

  1. let john = Person()
  2. let johnsStreet1 = john.residence?.address?.street
  3. let johnsStreet2 = john.residence!.address!.street

A. 程序有编译错误            B. 没有编译错误,但有运行错误

C. 代码第①行能够执行          D. 代码第②行不能执行