Skip to the content.

General Example -which contains everyting that i’ve learned-

// AN COMPLETE EXAMPLE
val Book.weight: Double
    get() = pages.times(1.5)

fun Book.tornPages(tornPages: Int): Int {
    pages = if (tornPages < pages) pages.minus(tornPages) else 0
    return pages
}

class Book(val title: String, val author: String, val year: String, var pages: Int) {

    companion object {
        const val MAX_NUMBER_OF_BOOKS_PER_USER = 30
    }

    fun printUrl() {
        println("${Constants.BASE_URL}/$title.html")
    }

    fun canBorrow(borrowedBookCount: Int): Boolean {
        return borrowedBookCount < MAX_NUMBER_OF_BOOKS_PER_USER
    }

    fun getTitleAndAuthor(): Pair<String, String> {
        return title to author
    }

    fun getTitleAndAuthorAndYear(): Triple<String, String, String> {
        return Triple(title, author, year)
    }

    override fun toString(): String {
        return "Book(title='$title', author='$author', year='$year', pages=$pages)"
    }
}

class Puppy {
    fun playWithBook(book:Book) {
        val tornedPageCount = Random.nextInt(0, book.pages) + 1
        book.tornPages(tornedPageCount).apply {
            println(
                "Sorry but puppy eat $tornedPageCount pages from the ${book.title}\n" +
                        if (this > 0) "Only $this pages left!!" else "Nothing left.."
            )
        }
    }
}

val myBook = Book("Satranc", "Stefan Zweig", "1997", 120)
//val(title, author) = myBook.getTitleAndAuthor()
val(title, author, year) = myBook.getTitleAndAuthorAndYear()
println("Here is your book $title written by $author in $year.")

val puppy = Puppy()
while(myBook.weight > 0) {
      puppy.playWithBook(myBook)
}

< Go back to Kotlin section