Slide 219
Slide 219 text
val download: Download = //...
val result = when (download) {
is App -> {
val (name, developer) = download
when (developer) {
is Person ->
if (developer.name == "Alice") {
"Alice's app $name"
} else {
"Not by Alice"
}
else -> "Not by Alice"
}
}
is Movie -> {
val (title, directory) = download
if (director.name == "Alice") {
"Alice's movie $title"
} else {
"Not by Alice"
}
}
}
Download download = //...
var result = switch (download) {
case App(var name, Person("Alice", _)) -> "Alice's app " + name
case Movie(var title, Person("Alice", _)) -> "Alice's movie " + title
case App(_), Movie(_) -> "Not by Alice"
};
sealed interface Developer { }
record Person(String name, int age) implements Developer { }
record Business(String name) implements Developer { }
sealed interface Download { }
record App(String name, Developer developer) implements Download { }
record Movie(String title, Person director) implements Download { }