TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
Записки гиканутого

30 May 2018, 16:48

Telegram'da ochish Ulashish Shikoyat qilish

В марте официальный твиттер-аккаунт Google, посвященный разработке приложений для Android (@AndroidDev), публиковал короткие, но очень полезные заметки о разработке на языке Kotlin. Я собрал их все вместе и опубликую в трех сообщениях в течение трех дней.

1. Эвлис-оператор (если null, то...):

val name: String = person.name ?: "unknown"

2. Строковые шаблоны:

val text = "$language has ${language.length} characters"

3. Разрушающие объявления:

val (red, green, blue) = color
val (x, y) = point

4. Оператор when:

return when (cargo) {
null, 0 -> "empty"
1 -> "tiny"
2..10 -> "small"
is Int -> "big inty"
else -> "$cargo"
}

5. Цикл for:

for(i in 1..100) { /* ... */ }
for(i in 100 downTo 1) { /* ... */ }
for(i in 1 until array.size step 2) { /* ... */ }
for((index, element) in array.withIndex()) { /* ... */ }
for((key, value) in map) { /* ... */ }

6. Свойства и поля:

class User {
val id: String = "" // неизменяемое поле
var name: String = "" // изменяемое поле

var surname: String = "" // изменяемое поле с кастомным геттером
get() = surname.toUpperCase()

var email: String = "" // изменяемое поле с кастомным сеттером
set(value) {
if(isEmailValid()) field = value
}
}

7. Классы данных (Kotlin автоматически добавляет к ним методы equals(), toString() и copy()):

data class User(val name: String, val email: String /* ... */ )

8. Модификаторы видимости:

val isVisible = true
private val isHidden = true
internal val almostVisible = true

9. Аргументы по умолчанию:

class BulletPointSpan(
private val bulletRadius: Float = DEFAULT_BULLET_RADIUS,
private val gapWith: Int = DEFAULT_GAP_WIDTH,
private val color: Int = Color.BLACK
) { /* ... */ }

val bulletPointSpan = BulletPointSpan()
val bulletPointSpan2 = BulletPointSpan(resources.getDimension(R.dimen.radius))
val bulletPointSpan3 = BulletPointSpan(color = Color.RED)

10. Изолированные классы (по сути прокачанный enum):

sealed class NetworkResult
data class Success(val result: String): NetworkResult()
data class Failure(val error: Error): NetworkResult()

viewModel.data.observe(this,
Observe { data ->
data ?: return@Observer
when (data) {
is Success -> showResult(data.result)
is Failure -> showError(data.error)
}
})
Android Developers (@AndroidDev) | Twitter
The latest Tweets from Android Developers (@AndroidDev). News and announcements for developers from the Android team // https://t.co/oFLh2KzaS8. Mountain View, CA

277 0 0
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot