繁体   English   中英

Swift:为多种类型的变量建模

[英]Swift: Modeling a variable with multiple types

我正在构建一个警报应用程序,其中每个警报都有与之关联的声音。

声音可以是歌曲,艺术家(歌曲)或播放列表(歌曲); 所有这些都具有标题和其他特定属性。

我希望能够执行Alarm.sound.title之类的功能,并让标题返回,而不管它是歌曲,艺术家还是播放列表。 我还需要实现逻辑,使应用程序根据歌曲,艺术家或播放列表的不同而表现不同。

我不确定是否应该使用类型属性创建声音类,并将歌曲,艺术家,播放列表作为子类,或者是否有更好的数据结构方法。 我读过有关类型转换的文章,但是我不确定这是正确的方向。

关于如何建模的任何建议将不胜感激。 谢谢

由于您想使用Swift,因此建议您使用协议。 这将满足您的需求。 简单的例子:

protocol Sound {
    let title: String { get }
    let length: TimeInterval { get }
}

该协议将定义接口。 然后,您可以创建各种符合协议的类-基础实现可以完全不同:

class Song: Sound {
    var title: String
    var length: TimeInterval

    init(title: String, length: TimeInterval) {
        self.title = title
        self.length = length
    }
}

class Artist: Sound {
    var title: String {
        return "Artist"
    }
    var length: TimeInterval {
        return 11.1
    }
}

然后,您可以简单地访问任何符合Sound协议的对象的title

let sound1: Sound = Song(title: "Song", length: 1)
let sound2: Sound = Artist()

print("\(sound1.title)")  // prints: Song
print("\(sound2.title)")  // prints: Artist

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM