Im sure everyone else knows this, but i havent bee...
# getting-started
b
Im sure everyone else knows this, but i havent been able to google/ stackoverflow this: in
scope.launch{}
, what do you call those curly braces? I know the last parameter type seems to have to be a lambda, often called
block
Is launch a scope function? Im not able to confirm
I mean it literally is a function of the variable scope in my case 😂, but i meant Kotlin “scope functions”
n
I think it's a lambda? if it's not inline, syntactic sugar for an anonymous inner class
I can't exactly tell from here, but it looks like the signature would be
fun launch(callback: () -> Unit)
, aka
fun launch(callback: Function1<Unit, Unit>)
...I think.
I know the last parameter type seems to have to be a lambda, often called 
block
I mean, this seems accurate
b
Yes, but i dont know what the curly braces mean. What can i call it? Its not a lambda, because it doesnt have
->
Also, if it were a lambda, the implicit keyword would be
it
, but its actually
this
this
is the receiver argument, and
it
is the first argument of the lambda. https://stackoverflow.com/questions/60485368/kotlin-difference-between-it-and-this-keyword
n
it's still a lambda, just without an argument and with a different receiver
CoroutineScope.() -> Unit
is as much a lambda as
(Int) -> Double
is
b
just to be clear, those are not lambdas, but lambda types? 😂 i think i understand
n
yeah. I'm not 100% on the terminology but it's at least close. maybe someone else can chime in.
b
i cant believe theres only 3 upvotes on that stackoverflow question
Thanks for pointing me in the right direction
n
it's a little weird that the top answer is talking about scope functions -- as far as I can tell, that's exclusively referring to let/also/apply/run/with. but any method can accept a lambda type that has a custom receiver
words are hard
b
i think that answer is kinda wrong, because as you say,
this
is applicable to all functions that take a lambda with receiver, not just scope functions
Scope functions: There are five such functions included in the Kotlin standard library: 
apply
, 
run
, 
with
, 
let
, and 
also
.
https://kotlinlang.org/docs/reference/scope-functions.html Edit: Edited with official link
b
CoroutineScope.() -> Unit
is an example of the use of the optional receiver type (CoroutineScope in this example) with the block/function being called on the receiver as opposed to
(CoroutineScope) -> Unit
d
b
great confusing combo, trailing lambda with receiver. but it was basically the trailing lambda syntax that was confusing me
c
Pro tip, highly recommend having this handy https://kotlinlang.org/docs/kotlin-docs.pdf. You can skim the table of contents for something that sounds like what you're looking for, and discover things that you wouldn't otherwise 🙂
b
thanks @caelum19, i just read this 2 months later xD, skimming now
😄 1