首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在分机中使用switch

我想在分机中使用switch
EN

Stack Overflow用户
提问于 2018-09-18 04:10:58
回答 1查看 69关注 0票数 0
代码语言:javascript
复制
protocol Sound { func makeSound() }

extension Sound {  
   func makeSound() { 
     print("Wow") 
   } 
}

protocol Flyable {
   func fly()
}

extension Flyable { 
    func fly() {
        print("✈️") 
    }
}

class Airplane: Flyable { }

class Pigeon: Sound, Flyable { }

class Penguin: Sound { }

let pigeon = Pigeon()
pigeon.fly()  // prints ✈️
pigeon.makeSound() // prints Wow

上面的代码运行良好,但我需要打印不同类型的声音(即)。如果我调用airplane.fly(),它应该打印我(“一些不同的东西”)。企鹅也是一样

EN

回答 1

Stack Overflow用户

发布于 2018-09-18 04:20:06

为Airplane类提供fly()

代码语言:javascript
复制
class Airplane: Flyable {
    func fly() {
        print("something different")
    }
}

let airBus: Airplane = Airplane()
airBus.fly()
//prints "something different"

您可以对Penguin类执行相同的操作:

代码语言:javascript
复制
class Penguin: Sound {
    func makeSound() {
        print("squawk")
    }
}

let  = Penguin()
.makeSound()
//prints "squawk"

您提供的函数是协议的默认实现。如果类型没有覆盖函数,它将采用默认实现。您可以在docs中找到更多信息

您可以使用协议扩展为该协议的任何方法或计算属性要求提供默认实现。如果一致类型提供了所需方法或属性的自己的实现,则将使用该实现而不是扩展提供的实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52375022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档