開発環境
- macOS Mojave - Apple (OS)
- Windows 10 Pro (OS)
- IntelliJ IDEA CE(Community Edition) (IDE(統合開発環境))
- Kotlin (プログラミング言語)
Head First Kotlin: A Brain-Friendly Guide (Dawn Griffiths(著)、David Griffiths(著)、O'Reilly Media)のChapter 12(built-in higher-order functions - Power Up Your Code)、Sharpen your pencil(390)の解答を求めてみる。
コード
data class Grocery(
val name: String, val category: String,
val unit: String, val unitPrice: Double,
val quantity: Int
)
val groceries = listOf(
Grocery("Tomatoes", "Vegetable", "lb", 3.0, 3),
Grocery("Mushrooms", "Vegetable", "lb", 4.0, 1),
Grocery("Bagels", "Bakery", "Pack", 1.5, 2),
Grocery("Olive oil", "Pantry", "Bottle", 6.0, 1),
Grocery("Ice cream", "Frozen", "Pack", 3.0, 2)
)
fun main() {
println("1.")
println(
groceries
.filter { it.category == "Vegetable" }
.sumByDouble { it.unitPrice * it.quantity }
)
println("2.")
val names = groceries
.filter { it.unitPrice * it.quantity < 5.0 }
.map { it.name }
names.forEach { println(it) }
println("3.")
groceries
.groupBy { it.category }
.forEach {
println("${it.key}: ${it.value.sumByDouble { it.unitPrice * it.quantity }}")
}
println("4.")
groceries
.filterNot { it.unit == "Bottle" }
.groupBy { it.unit }
.forEach {
println(it.key)
it.value.forEach {
println("\t${it.name}")
}
}
}入出力結果
1. 13.0 2. Mushrooms Bagels 3. Vegetable: 13.0 Bakery: 3.0 Pantry: 6.0 Frozen: 6.0 4. lb Tomatoes Mushrooms Pack Bagels Ice cream Process finished with exit code 0
0 コメント:
コメントを投稿