Implement a kind of date arithmetic. Support adding years, weeks and days to a date. You could be able to write the code like this: date + YEAR * 2 + WEEK * 3 + DAY * 15. At first, add an extension function 'plus()' to MyDate, taking a TimeInterval as an argument. Use an utility function MyDate.addTimeIntervals() declared in DateUtil.kt Then, try to support adding several time intervals to a date. You may need an extra class.
REAL SCENE :
import TimeInterval.*
data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int)
enum class TimeInterval { DAY, WEEK, YEAR }
operator fun MyDate.plus(timeInterval: TimeInterval): MyDate = TODO()
fun task1(today: MyDate): MyDate {
return today + YEAR + WEEK
}
fun task2(today: MyDate): MyDate {
TODO("Uncomment") //return today + YEAR * 2 + WEEK * 3 + DAY * 5
}
SOLUTION SCENE:
import TimeInterval.*
data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int)
enum class TimeInterval { DAY, WEEK, YEAR }
operator fun MyDate.plus(timeInterval: TimeInterval): MyDate = addTimeIntervals(timeInterval, 1)
class RepeatedTimeInterval(val timeInterval: TimeInterval, val number: Int)
operator fun TimeInterval.times(number: Int) = RepeatedTimeInterval(this, number)
operator fun MyDate.plus(timeIntervals: RepeatedTimeInterval) = addTimeIntervals(timeIntervals.timeInterval, timeIntervals.number)
fun task1(today: MyDate): MyDate {
return today + YEAR + WEEK
}
fun task2(today: MyDate): MyDate {
return today + YEAR * 2 + WEEK * 3 + DAY * 5
}
RESULTS SCENE:
Passed: testOneMonth
Passed: testAddOneTimeInterval
Passed: testMonthChange
Conventions Comparison In range Range to For loop Operators overloading DateUtil.kt Destructuring declarations Invoke
HELP : Really want to dedicate you 2 years for app development go ahead will not regret in future : https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012
Don't Forget to say thanks by Subscribing : https://www.youtube.com/channel/UCmcq3sQAsw8SCHSjuzkYkfw