swift5.5文档中测试代码与运行结果

这篇博客详细展示了19个针对Swift 5.5的测试用例,包括不同代码实现及对应的运行结果截图,涵盖了各种语言特性和应用场景。

试一试代码与结果

试一试1:

代码:

let floatConst: Float = 4
//使用print将结果输出
print("floatConst结果为:\floatConst")

结果截图:

在这里插入图片描述

试一试2:

代码:

let label = "The width is "
let width = 94
let widthLabel = label + width
print(widthLabel)

结果截图:

在这里插入图片描述

试一试3:

代码:

let name = "John"
let floatA:Float = 5
let floatB:Float = 6
let sayA = "Hello,\(name).Would you give me the answer as 5+6,5-6,5*6,5/6?"
let sayB = "5+6 = \(floatA + floatB), 5-6 = \(floatA - floatB), 5*6 = \(floatA * floatB), 5/6 = \(floatA / floatB)"
print(sayA)
print(sayB)

结果截图:

在这里插入图片描述

试一试4:

代码一:

var optionalString: String? = "Hello"
print(optionalString == nil)
// Prints "false"

var optionalName: String? = nil
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello, \(name)"
}

print(greeting)

结果截图1:

在这里插入图片描述

代码二:

var optionalString: String? = "Hello"
print(optionalString == nil)
// Prints "false"

var optionalName: String? = nil
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello, \(name)"
}else{
    greeting = "Hi"
}
print(greeting)

在这里插入图片描述

试一试5:

代码:

let vegetable = "red pepper"
switch vegetable {
case "celery":
    print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
    print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"):
    print("Is it a spicy \(x)?")
}

结果截图:

在这里插入图片描述

试一试6:

代码:

var largest = 0
var largest_kind = ""
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largest_kind = kind
        }
    }
}
print(largest,largest_kind)

结果截图:

在这里插入图片描述

试一试7:

代码:

 func greet(person: String, lunch: String) -> String {
    return "Hello \(person), today special lunch is \(lunch)."
}
 
var greetStr = greet(person: "Bob", lunch: "dumplings")
 
 print(greetStr)

结果截图:

在这里插入图片描述

试一试8:

代码:

var numbers:[Int] = [0,1,2,3,4,5,6,7,8,9,10]
var newNumber:[Int] = numbers.map({ (number: Int) -> Int in
    var result:Int = number
    if(number % 2 == 1){
        result = 0
    }
    return result
})
print(numbers)
print(newNumber)

结果截图:

在这里插入图片描述

试一试9:

代码:

class Shape {
    var numberOfSides = 0
    let sideLength = 5
    func simpleDescription(number) -> String {
        return "A shape with \(sideLength*number) sides."
    }
}
var shape = Shape()
var round = shape.simpleDescription(3)
print(round)

结果截图:

在这里插入图片描述

试一试10:

代码:

class NamedShape {
    var numberOfSides: Int = 0
    var name: String

    init(name: String) {
        self.name = name
    }

    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}

class Circle:NamedShape{
    var radiu:Double
    
    init(name: String,radiu:Double) {
        self.radiu = radiu
        super.init(name: name)
    }
    
    func area () -> Double {
        return radiu * radiu * 3.14
    }
    
    override func simpleDescription() -> String {
        return "\(name) with area \(area())"
    }
}

var newCircle = Circle(name:"firstCircle",radiu:5.0)
let desc = newCircle.simpleDescription()
print(desc)

结果截图:

在这里插入图片描述

试一试11:

代码

enum Rank:Int {
    case ace = 1
    case two, three, four, five, six, seven, eight, nine, ten
    case jack, queen, king
    
    func simpleDescription() -> String {
        switch self{
            case .ace:
                return "ace"
        case .jack:
                return "jack"
        case .queen:
                return "queen"
        case .king:
                return "king"
            default:
                return String(self.rawValue)
        
        }
    }
    
    func compareRawValueWith(b:Rank) -> String{
        if(self.rawValue>b.rawValue){
            return "\(self)>\(b)"
        }else if(self.rawValue == b.rawValue){
            return "\(self)=\(b)"
        }else{
            return "\(self)<\(b)"
        }
    }
}

let a = Rank.jack
let b = Rank.jack

let stringP = a.compareRawValueWith(b: b)

print(stringP)

结果截图:

在这里插入图片描述

试一试12:

代码:

enum Suit {
    case spades,hearts,diamonds,clubs
    
    func simpleDescription() -> String {
        switch self {
            case .spades:
                return "spades"
            case .hearts:
                return "hearts"
            case .diamonds:
                return "diamonds"
            case .clubs:
                return "clubs"
        }
    }
    func color() -> String {
        switch self {
            case .spades:
                return "black"
            case .hearts:
                return "red"
            case .diamonds:
                return "black"
            case .clubs:
                return "red"
        }
    }
}

let hearts = Suit.hearts
let heartsDescription = hearts.simpleDescription()
let heartsColor = hearts.color()
print(heartsColor)

结果截图:

在这里插入图片描述

试一试13:

代码:

enum ServerResponse {
    case result(String, String)
    case failure(String)
    case raiseResult(String)
}

let success = ServerResponse.result("6:00 am", "8:09 pm")
let failure = ServerResponse.failure("Out of cheese.")
let raiseSuccess = ServerResponse.raiseResult("6:00 am")

switch raiseSuccess {
    case let .result(sunrise, sunset):
        print("Sunrise is at \(sunrise) and sunset is at \(sunset).")
    case let .raiseResult(sunrise):
        print("Sunrise is at \(sunrise)")
    case let .failure(message):
        print("Failure...  \(message)")
}

结果截图:

在这里插入图片描述

试一试14:

代码

enum Rank:Int {
    case ace = 1
    case two, three, four, five, six, seven, eight, nine, ten
    case jack, queen, king
    
    func simpleDescription()->String{
        switch self {
            case .ace:
                return "ace"
            case .jack:
                return "jack"
            case .queen:
                return "queen"
            case .king:
                return "king"
            default:
                return String(self.rawValue)
        }
    }
}

enum Suit {
    case spades, hearts, diamonds, clubs
    func simpleDescription()->String{
        switch self {
            case .spades:
                return "spades"
            case .hearts:
                return "hearts"
            case .diamonds:
                return "diamonds"
            case .clubs:
                return "clubs"
        }
    }
    func color()->String{
        switch self {
            case .spades:
                return "black"
            case .hearts:
                return "red"
            case .diamonds:
                return "red"
            case .clubs:
                return "black"
        }
    }
}

struct Card {
    var rank:Rank
    var suit:Suit
    func simpleDescription() -> String {
        return "The \(rank.simpleDescription()) of \(suit.color()) \(suit.simpleDescription())"
    }
}

func initCars ()->[Card] {
    var cards:[Card] = []
    let rankArr:[Rank] = [.ace, .two, .three, .four, .five, .six, .seven, .eight, .nine, .ten, .jack, .queen, .king]
    let suitArr:[Suit] = [.spades, .hearts, .diamonds, .clubs]
    for v in suitArr{
        for n in rankArr{
            let card = Card(rank: n, suit:v)
            cards.append(card)
        }
    }
    return cards
    
}
let cards = initCars()

for card in cards {
    print(card.simpleDescription())
}

结果截图:

在这里插入图片描述

试一试15:

代码:

protocol ExampleProtocol {
    var simpleDescription: String { get }
    var simpleName: String { get }
    mutating func adjust()
}
class SimpleClass: ExampleProtocol {
    var simpleDescription: String = "A very simple class."
    var simpleName: String = "Simple Class"
    
    var anotherProperty: Int = 69105
    func adjust() {
        simpleDescription += "  Now 100% adjusted."
    }
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription

struct SimpleStructure: ExampleProtocol {
    var simpleDescription: String = "A simple structure"
    var simpleName: String = "Simple Struct"
    mutating func adjust() {
        simpleDescription += " (adjusted)"
    }
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription

结果截图:

在这里插入图片描述

试一试16:

代码:

protocol AbsoluteValue {
    var absoluteValue: Int { get }
}

extension Double: AbsoluteValue{
    var absoluteValue:Int{
        return 5
    }
}

var a = 1.2

print(a.absoluteValue)

结果截图:

在这里插入图片描述

试一试17:

代码:

enum PrinterError: Error {
    case outOfPaper
    case noToner
    case onFire
}

func send(job: Int, toPrinter printerName: String) throws -> String {
    if printerName == "Never Has Toner" {
        throw PrinterError.noToner
    }
    return "Job sent"
}

do {
    let printerResponse = try send(job: 1040, toPrinter: "Never Has Toner")
    print(printerResponse)
} catch {
    print(error)
}
// Prints "Job sent"

结果截图:

在这里插入图片描述

试一试18:

代码:

enum PrinterError: Error {
    case outOfPaper
    case noToner
    case onFire
}
//增加已知错误之外的错误集,输出第三种错误
enum OtherError: Error{
    case unknow
}

func send(job: Int, toPrinter printerName: String) throws -> String {
    if printerName == "Never Has Toner" {
        throw PrinterError.noToner
    }else if printerName == "On Fire"{
        throw PrinterError.onFire
    }else if printerName == "Out of Paper"{
        throw PrinterError.outOfPaper
    }else if printerName == "Unknow Error"{
        throw OtherError.unknow
    }
    return "Job sent"
}
//当传入的错误是"On Fire"时执行第一种结果
//当传入的参数属于PriterError时,除了onFire,都会输出第二种
do {
    let printerResponse = try send(job: 1440, toPrinter: "Unknow Error")
    print(printerResponse)
} catch PrinterError.onFire {
    print("I'll just put this over here, with the rest of the fire.")
} catch let printerError as PrinterError {
    print("Printer error: \(printerError).")
} catch {
    print(error)
}
// Prints "Job sent"

结果截图:

在这里插入图片描述

试一试19:

代码:

func anyCommonElements<T: Sequence, U: Sequence>(_ lhs: T, _ rhs: U) -> [Any]
    where T.Element: Equatable, T.Element == U.Element
{
    var sameElement:[Any] = []
    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                sameElement.append(rhsItem)
            }
        }
    }
    return sameElement
}
let a = anyCommonElements([1, 2, 3], [3])
print(a)

结果截图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值