https://kotlinlang.org logo
#getting-started
Title
# getting-started
b

Ben Butterworth

08/21/2020, 9:55 PM
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

nanodeath

08/21/2020, 10:06 PM
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

Ben Butterworth

08/21/2020, 10:10 PM
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

nanodeath

08/21/2020, 10:17 PM
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

Ben Butterworth

08/21/2020, 10:19 PM
just to be clear, those are not lambdas, but lambda types? 😂 i think i understand
n

nanodeath

08/21/2020, 10:20 PM
yeah. I'm not 100% on the terminology but it's at least close. maybe someone else can chime in.
b

Ben Butterworth

08/21/2020, 10:20 PM
i cant believe theres only 3 upvotes on that stackoverflow question
Thanks for pointing me in the right direction
n

nanodeath

08/21/2020, 10:23 PM
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

Ben Butterworth

08/21/2020, 10:36 PM
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

brandonmcansh

08/22/2020, 3:04 AM
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

Dennis

08/22/2020, 2:03 PM
b

Ben Butterworth

08/22/2020, 7:03 PM
great confusing combo, trailing lambda with receiver. but it was basically the trailing lambda syntax that was confusing me
c

caelum19

08/28/2020, 4:04 PM
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

Ben Butterworth

11/04/2020, 10:30 PM
thanks @caelum19, i just read this 2 months later xD, skimming now
😄 1