dluciv: (линейка)
[personal profile] dluciv
В Котлине, если ты хочешь сделать функцию с локальными переменными, придётся возвращать значение при помощи return.

fun bugaga() {
  val z = 5
  return z
}



Я это конечно объехал, но код на мой вкус красивее не стал =):

fun bugaga() = when(true) { else -> {
  val z = 5
  z
}}


Ещё можно написать, как иногда пишут на JS, и надеяться, что заинлайнит лямбду:

fun bugaga() = ({
  val z = 5
  z
}())


Для этого даже есть специальная затычка run, чтобы выглядело немного пристойнее (скобок меньше):

fun bugaga() = run {
  val z = 5
  z
}


Из сказанного выше уже становится понятно, что Котлин очень хочет из любых фигурных скобок сделать лямбду. Оно на самом деле так и есть. Если в середине тела функции попытаться сделать использовать фигурные скобки, как выражение, то тоже получится не то, что считается в них, а функция, которая считает то, что в них.

Наконец, можно просто присвоить лямбду в переменную/константу, написав:


val bugaga = {
  val z = 5
  return z
}


В какую жесть это выльется, см. в комментах.

Но почему хотя бы для тел функций не сделать исключение? if, в конце концов, в Котлине нормальный же.

Или я чего-то очень-очень не догнал (надеюсь), причём не я один, а ещё как минимум один мужик, или Котлин пилили фанаты goto...
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

September 2017

S M T W T F S
     12
34 56789
10111213 14 1516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 22nd, 2017 04:17 am
Powered by Dreamwidth Studios