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? = cod
println("cod == \(cod)")
cod = nil
println("cod == \(cod)")
println("dab == \(dab)")
A.
cod == a fish
cod == nil
dab == nil
B.
cod == nil
cod == nil
dab == a fish
C.
cod == a fish
cod == nil
dab == a fish
D.
cod == nil
cod == nil
dab == nil
- 下列语句能够正确执行的是( )。
A.
var optionalCod: String
if 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: String
init(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. 代码第②行不能执行