R:
Size: a a a
R:
R:
R:
λ
String.eq() // получение инстансаТак вот смысл в чем - вне скоупа лямбды
.run {
"1" eqv "2"
}
run
вы не можете сравнивать строки через eqv
, зато внутри скоупа строки приобретают новую функциональность засчет того, что контекст переносится внутрь инстанса тайпкласса Eq
для строк. Представьте теперь, что у вас не String.eq()
, а, например, какой-нибудь AnalyticsContext
, внутри которого инкапсулирован инстанс какого-нибудь веб-клиента, который отсылает аналитику куда-нибудь. И вы пишете:AnalyticsContext().run { // перенос контекстаИ смысл такого подхода в том, что вам не приходится пользоваться, к примеру, DI-ем, потому что вся функциональность поделена на такие вот контексты, которые имеют максимум пару зависимостей. Вооот
Event(id, type).send() /* вне AnalyticsContext тип Event не имеет поведения "send" */
}
λ
(
R:
R:
e
R:
R:
λ
R:
(
(
(
(
(
AK
I
String.eq() // получение инстансаТак вот смысл в чем - вне скоупа лямбды
.run {
"1" eqv "2"
}
run
вы не можете сравнивать строки через eqv
, зато внутри скоупа строки приобретают новую функциональность засчет того, что контекст переносится внутрь инстанса тайпкласса Eq
для строк. Представьте теперь, что у вас не String.eq()
, а, например, какой-нибудь AnalyticsContext
, внутри которого инкапсулирован инстанс какого-нибудь веб-клиента, который отсылает аналитику куда-нибудь. И вы пишете:AnalyticsContext().run { // перенос контекстаИ смысл такого подхода в том, что вам не приходится пользоваться, к примеру, DI-ем, потому что вся функциональность поделена на такие вот контексты, которые имеют максимум пару зависимостей. Вооот
Event(id, type).send() /* вне AnalyticsContext тип Event не имеет поведения "send" */
}