Skip to content

Instantly share code, notes, and snippets.

@gaplo917
Last active December 7, 2016 15:57
Show Gist options
  • Save gaplo917/7068e79ba0f46589123a462f791bf83e to your computer and use it in GitHub Desktop.
Save gaplo917/7068e79ba0f46589123a462f791bf83e to your computer and use it in GitHub Desktop.
Kotlin with Named and Default Argument help to write clean code
// Kotlin
// Default argument
fun doSomething(
fname: String,
lname: String,
addr: String = "N/A",
gender: Gender = Gender.Unknown
){
// do something that really need fname,lname, addr, gender..
}
val firstName = "firstName"
val lastName = "lastName"
val address = "Address"
val gender = Gender.Male
// Normally you can do this
doSomething(firstName, lastName, address, gender) // OK!
doSomething(firstName, lastName, address) // OK!
doSomething(firstName, lastName) // OK!
// Fail, compile error! Type mismatch! Expected String type
doSomething(firstName, lastName, gender)
// It can be solved by Named Argument
// with Named Argument
doSomething(
fname = firstName,
lname = lastName,
addr = address,
gender = gender) // OK!
// skip the address (3rd argument)
doSomething(
fname = firstName,
lname = lastName,
gender = gender) // OK!
// Order is not important!!
doSomething(
addr = address,
lname = lastName,
fname = firstName) // OK!
// Fail! compile error: lname is required
// because lname has no default value
doSomething(
addr = address,
fname = firstName)
// Ask yourself:
// Is it possible to achieve the same level of conciseness in Java?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment