Last active
December 7, 2016 15:57
-
-
Save gaplo917/7068e79ba0f46589123a462f791bf83e to your computer and use it in GitHub Desktop.
Kotlin with Named and Default Argument help to write clean code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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