in ran into an issue with default arguments ```my...
# getting-started
t
in ran into an issue with default arguments
Copy code
myFunc(p1: String, p2: Consumer<*>, p3: String = "") {}
// is not the same as 
myFunc(p1: String, p2: Consumer<*>) { myFunc(p1, p2, "") }
myFunc(p1: String, p2: Consumer<*>, p3: String) {}
the compiler does not allow you to use trailing lambdas if you use default arguments i'm not really sure if it's an issue, but did seem odd to me
n
I'm confused by the code snippet. why does only one have a body?
t
the body is irrelevant, but i added curly braces now
n
what if you put p2 last?
t
unless i declare myFunc as two separate functions, i'm not able to call
Copy code
myFunc("test") { }
that will work
n
trailing lambdas always require the lambda be the last argument tho
t
it is the last argument, since the third argument is omitted (it has a default value)
i don't see why the compiler cares if it's defined as two different functions, or one function with a default value
n
if there's an argument after it, then it's not the last argument
default arguments don't completely obviate the need for overloads unfortunately
t
it would seem so
just a small gotcha after auto-converting some java code
n
it's not always an option to change the signature 🙂
it's understandable that it's a point of confusion 🙂
t
@Ruckus the two lines you quote was not a question+response, it was two messages that were sent at the same time. a more accurate representation of the conversation would be
Max Aller: what if you put p2 last?
david: that will work
but i can't change the signature
n
you could add an extension method with the arguments in the correct order perhaps