@kotlin_lang

Страница 632 из 982
Ivan
12.04.2018
08:51:12
Тут явно напрашивается when
when тут проблему не решит ИМХО. Там в функции для проверки успешности выполнения "SUCCEEDED" вызывается каждый раз. Вот скалячий for-comprehension тут пришелся бы кстати

Mikhail
12.04.2018
08:56:35
А еще можно лисп-стайл (::Op1, ::Op2, ::Op3).dropwhile{ succeded(it(x)).lastOrNull() ?: S_OK

Щерба
12.04.2018
09:25:11
Всем привет!

Подскажите Required: Nothing?

Google
Щерба
12.04.2018
09:25:30
sharedPreferenses.getString("language", Locale.getDefault().getLanguage()) as Nothing?

Выкидавает исключение в java все отлично проходит

Alexey
12.04.2018
09:26:27
Зачем ты строку приводишь к Nothing?

Щерба
12.04.2018
09:27:08
А как нужно, моло знаком с котлин, но если привести к спрингу ошибка при компиляции

Egor
12.04.2018
09:28:00
а куда это суется?

sharedPreferenses.getString("language", Locale.getDefault().getLanguage()) вот это значение

Щерба
12.04.2018
09:28:16
var language = null

language = sharedPreferenses!!.getString("language", Locale.getDefault().getLanguage())

Alexey
12.04.2018
09:28:30
ясно понятно

var language: String = null

но стоит вообще избегать var

Щерба
12.04.2018
09:28:59
language: String вот так могу привести к любому типу?

а если val

Google
Albert
12.04.2018
09:29:22
Только String?

Andrew
12.04.2018
09:30:05
И lateinit есть. И !! — оператор, которого в коде быть (почти) не должно. Ты бы сначала документацию к языку почитал, семплы простенькие, а потом уже в дебри шёл.

Albert
12.04.2018
09:30:12
Но этого тоже стоит избегать)

Michael
12.04.2018
09:30:35
функция getString она же String и возвращает, зачем что-то приводить вообще

Щерба
12.04.2018
09:30:56
Ну так я и говорю

Тимур
12.04.2018
09:31:09
А еще можно лисп-стайл (::Op1, ::Op2, ::Op3).dropwhile{ succeded(it(x)).lastOrNull() ?: S_OK
ох, очень надеюсь что апологеты функционального подхода таки не прорвутся окончательно со своими монадами, и можно будет по прежнему писать со старыми добрыми циклами и условиями

Egor
12.04.2018
09:31:13
потому что парень написал var language = null без объявления типа, поэтому тип там стал String

Да

ой

Andrew
12.04.2018
09:31:28
Egor
12.04.2018
09:31:32
не String, да, Nothing

Щерба
12.04.2018
09:32:02
Всем спасибо!

Alexey
12.04.2018
09:32:35
для null нельзя просто тип вывести и typechecker похоже в ботом тайп уходит, у нас в скалке по крайней мере при подобных ситуациях с типами так

Andrew
12.04.2018
09:33:27
Всем спасибо!
Это всё к тому, что тебе просто надо написать var language: String? = null. И таки пройти Kotlin Koans хотя бы.

Michael
12.04.2018
09:34:41
зачем ему там null вообще

взять и вернуть результат getString тем более, что он туда ещё и дефолтное значение кидает на тот случай, если ничего по ключу не найдется

Andrew
12.04.2018
09:35:53
Я, конечно, могу пованговать, что человеку нужен lateinit, ибо объявление от инициализации оторвано, но без кода судить непросто.

Michael
12.04.2018
09:36:15
это андроид

Google
Andrew
12.04.2018
09:36:15
По крайней мере, sharedPreferences!! намекает именно на это.

Правильно, и префы, если они не дефолтные, достаются из контекста и обычно не в конструкторе. Отсюда и вангую :)

Щерба
12.04.2018
09:48:20
зачем ему там null вообще
Потому что у меня when и мне не надо писать 1000 строк кода)

зачем ему там null вообще
var language:String? = null val sharedPreferenses = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) when (Locale.getDefault().getLanguage()) { "ru" -> { language = sharedPreferenses!!.getString("language", Locale.getDefault().getLanguage()) } "en" -> { language = sharedPreferenses.getString("language", Locale.getDefault().getLanguage()) } "kk" -> { language = sharedPreferenses.getString("language", Locale.getDefault().getLanguage()) } else -> { language = sharedPreferenses.getString("language", "ru") } }

Egor
12.04.2018
09:50:14
что..

Vishnyakov
12.04.2018
09:50:24
when (Locale.getDefault().getLanguage()) { "ru", "kk", "en" -> { language = sharedPreferenses!!.getString("language", Locale.getDefault().getLanguage()) } else -> { language = sharedPreferenses.getString("language", "ru") }

хотя всё равно хрень)

Egor
12.04.2018
09:53:33
language = sharedPreferenses!!.getString("language", when(Locale.getDefault().getLanguage()) { "ru", "kk", "en" -> Locale.getDefault().getLanguage() else -> "ru" })

мать мою за ногу

Андрей
12.04.2018
09:54:54
зачем вообще это через sharedPreferenses делать? https://developer.android.com/guide/topics/resources/localization.html

Vishnyakov
12.04.2018
09:54:58
language = sharedPreferenses!!.getString("language", when(Locale.getDefault().getLanguage()) { "ru", "kk", "en" -> Locale.getDefault().getLanguage() else -> "ru" })
похоже на синдром одной строки =/ тут концептуально с кодом чет не то

Egor
12.04.2018
09:55:51
Да я тоже смотрю, и глаз подозрительно часто натыкается на Locale.getDefault().getLanguage()

Vishnyakov
12.04.2018
09:58:55
вопрос - а как в префсы вообще попал локэйл не этих языков?

почему при чтении из них мы строим логику/

Щерба
12.04.2018
10:04:55
зачем вообще это через sharedPreferenses делать? https://developer.android.com/guide/topics/resources/localization.html
Я не первый день знаком с android) для меня котлин новинка)

зачем вообще это через sharedPreferenses делать? https://developer.android.com/guide/topics/resources/localization.html
Как локализация делаеться в курсе, каким образом вы смените локализацию программно и потом при следущем входе в приложение сохраните ее?

Возможно я что-то не так делаю)

Vishnyakov
12.04.2018
10:07:53
Возможно я что-то не так делаю)
какую роль тогда префсы играют в этой логике?

если ориентир на реалтайм локализацию

Google
Щерба
12.04.2018
10:08:56
какую роль тогда префсы играют в этой логике?
Ну вот смотри, я поставил русский язык, затем вышел из приложения, а мне надо чтобы русский язык остался

То есть при следущем входе у меня будет язык по умолчанию

Michael
12.04.2018
10:10:16
о ужас язык по умолчанию как пользоваться таким приложением

вы решаете проблему, которой ни у кого нет

Vishnyakov
12.04.2018
10:10:42
Щерба Константин, [12 апр. 2018 г., 13:07:42]: Ну вот смотри, я поставил русский язык, затем вышел из приложения, а мне надо чтобы русский язык остался То есть при следущем входе у меня будет язык по умолчанию два противореащих сообщения

в первом варианте - один раз записать (считывать всегда ообычным способом) во втором - не использовать префсы для этого вовсе

Anton
12.04.2018
10:11:39
@kotlin_mobile

Vishnyakov
12.04.2018
10:12:24
@kotlin_mobile
меняем SharedPreferences на java.util.prefs.Preferences

Anton
12.04.2018
10:12:48
и че

тогда в джвм

Vishnyakov
12.04.2018
10:12:56
и че
и всё, не мобайл

Anton
12.04.2018
10:12:57
тут котлин причем?

Vishnyakov
12.04.2018
10:13:36
жуть какая. джаву из котлина мы не вызываем? тут исклюительно котлиновскийсахар обсуждается???

Anton
12.04.2018
10:13:36
я мельком прочитал тут все вопросы по префам и локализации в андроиде

Vishnyakov
12.04.2018
10:15:34
Котлин > Джава нынче
class KotlinJava: Java() =)

Andrew
12.04.2018
10:50:00
Вопрос с хранением локализации в префах — @android_ru, но его тут не задавали — у человека уже так сделано и менять он не хочет. Вопрос вот об этом вполне уместен: val localeLang = Locale.getDefault().getLanguage() val lang = if(localeLang in listOf("ru", "kk", "en")) localeLang else "ru" val result = prefs.getString("language", lang)

Michael
12.04.2018
11:28:48
сложно смотреть безучастно на чужие бессмысленные страдания

Artem
12.04.2018
16:06:58
https://youtu.be/xG7na0kTyXk

Google
zir
12.04.2018
16:10:46


Anton
12.04.2018
16:11:14
еее мемы

You
12.04.2018
16:12:09
Jetbrains дал вам if

zir
12.04.2018
16:13:35
не очень чистый

Albert
12.04.2018
16:14:21
Ыы

Mi
12.04.2018
16:14:52
Jetbrains дал вам if
Так получилось просто

whalemare
12.04.2018
16:16:17
Новый иф гораздо лучше тернарника

Страница 632 из 982