開発環境
- 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 コメント:
コメントを投稿