Skip to content

Latest commit

 

History

History
61 lines (47 loc) · 1.28 KB

January.md

File metadata and controls

61 lines (47 loc) · 1.28 KB
sidebar_position title description
1
January
Understanding how to use infix function and member references

The Challenge #1

Understanding how to use infix function and member references

Question

import junit.framework.TestCase.assertEquals

/**
 * Without changing anything in the main function. 
 * Ensure all the test cases pass
 */

data class Alphabet(val value: Char, val position: Int)

val alphabets = listOf(
    Alphabet('K',11), Alphabet('L', 12), 
    Alphabet('M', 13), Alphabet('N', 14)
)

fun main() {
    
    /**
     * Ground Rules : 
     * The pair's second value should be generic
     **/
    assertEquals(
     "KotlinConf'24 Global Nairobi Edition",
     "KotlinConf'23 Global" correct Pair("23",24) merge " Nairobi Edition" 
    )

    /**
     * Ground Rules : 
     * The function should be an expression
     * The function should use a member reference
     **/
    assertEquals(
        listOf(11,12,13,14),
        alphabets.years() 
    )

    println("Everything Passed!")
}

Solution

Add this after the main function

infix fun String.correct(pair: Pair<String, Int>) = this.replace(pair.first, pair.second.toString())

infix fun String.merge(value: String) = this + value

fun List<Alphabet>.years() = map(Alphabet::position)