bbj*_*jay 2 enums kotlin swift
我有以下Swift枚举:
enum ScreenName: String {
case start = "Start Screen"
case dashboard = "My Dashboard Screen"
}
Run Code Online (Sandbox Code Playgroud)
这使我可以拥有一组类型化的常量,并像下面这样使用它们:
func trackView(screen: ScreenName) {
print("viewed \(screen.rawValue)")
}
trackView(screen: .start) // -> "viewed Start Screen"
Run Code Online (Sandbox Code Playgroud)
在Kotlin中这相当于什么?
小智 6
就像是:
enum class ScreenName(val displayName : String) {
START("Start Screen"),
DASHBOARD("My Dashboard Screen")
}
fun trackView(screenName : ScreenName) {
print("viewed ${screenName.displayName}")
}
Run Code Online (Sandbox Code Playgroud)
我现在发现的另一种可能性是使用密封类:
sealed class ScreenName(val name : String) {
object Start : ScreenName("Start Screen")
object Dashboard : ScreenName("My Dashboard Screen")
data class NewsDetail(val title: String) : ScreenName("News")
val displayName: String
get() = when(this) {
is NewsDetail -> "${name} - ${title}"
else -> name
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的好处是它可以模拟带有关联值的 Swift 枚举。
归档时间: |
|
查看次数: |
968 次 |
最近记录: |