To Do Lists https://play.google.com/store/apps/details?id=com.vrproductiveapps.whendogl=US» target=»_blank»]play.google.com[/mask_link]
When — стильные напоминания о рутинных делах
Иногда за простым фасадом приложения скрывается неожиданная продуманность, позволяющая по-новому взглянуть на решение существующей проблемы. Именно таким вот инструментом и стал органайзер рутинных дел под названием When, за внешним фасадом которого прячется кардинально необычный подход к управлению делами.
Главное, что хочется сказать сразу же в самом начале обзора — When это не «тудушник-напоминалка» в отличии от Clear, который возникает в памяти при первом же взгляде на When. Если типичные «тудушки»-напоминалки предназначены для текущих одноразовых задач, When наоборот позволяет «подумать о вечном» и берет на себя те активности, которые надо повторять периодически. Стоит только подумать — сколько у нас в голове хранится таких «не забыть»: пополнить мобильный и Интернет, купить проездной, сходить в спортзал вместо пивной, забрать ребенка из детского садика, начать копить деньги на новый iPhone… Несть числа сим задачам.
GOOGLE HANGOUTS ЧТО ЭТО ЗА ПРОГРАММА
В начале нас встречает относительно знакомый интерфейс, построенный на цветных полосах и жестах. Несмотря на то что программа управляется несколькими простыми жестами — в начале она продемонстрирует вам подсказку про них, что позволяет сразу включиться в работу. Если вы вдруг что-то подзабудете — к вашим услугам маленькая круглая кнопка в правом нижнем углу.
В целом — в интерфейсе есть ровно три основных действия. Создание задачи, отметка действия как выполненного и меню с несколькими дополнительными настройками.
При создании уведомления необходимо потянуть экран вниз и указать название действия и желаемую периодичность. Приятно, что тут подумали и сделали возможность задавать период в месяцах, неделях и днях, хотя программа это потом все же пересчитает в дни, так как в них удобней всего вести расчеты, при этом — для срока в один месяц — реально учитывается календарный месяц и год, например, в феврале будет 28 дней в невисокосном году и т.д. Стоит учитывать, что эти сроки вы задаете приблизительно, они скорее задают желаемую, а не требуемую периодичность. Вы можете выполнить действие через какое-то время после истечения указанного периода и When начнет считать снова с момента, когда вы это сделали.
Web Companion — Что это за программа и как её удалить
Созданные напоминания считают дни, сколько вы не выполняли какое-либо действие, при этом они очень умно сортируются. Критерием сортировки выступает отношение числа дней, когда действие не выполнялось к общему периоду, заданному вами. То есть если вы отметили, что поливать цветы надо раз в 3 дня, а покупать зубную щетку — раз в 3 месяца, то два дня в первом случае будут куда важней, чем 20 дней во втором. В целом, такое умное поведение — то, что надо для периодических задач, это позволяет иметь большой список задач, а приложение возьмет на себя организацию этого списка, показывая что желательно делать в первую очередь.
Напоминаниям можно задать уведомление, тогда по истечении срока приложение уведомит вас бейджем и уведомлением. Кстати, тут скрывается еще одна магическая штучка, позволяющая упростить работу с программой: When запоминает время, когда вы последний раз делали какое-либо действие, и напоминание вы получите в то же самое время.
Можно задачу поставить на паузу, если вы, например, уехали, заболели, или просто не хотите выполнять ее. Счетчик времени будет просто остановлен.

Конечно, по инерции в программе не хватает цветовых схем, но разработчики уже обещают исправить этот недостаток в ближайшем обновлении, равно как и добавить синхронизацию через iCloud.
После первых созданных в When задач, я стал думать, что «было бы здорово добавить сюда то-то» или «а как было бы хорошо, если бы When умел вот это», но потом, подумав, пришел к выводу, что ничего особо в него добавлять не надо: это убьет его легкость и простоту.
Поэтому, если вам нравится подобный визуальный стиль, и у вас есть масса рутинных дел, про которые вы часто забываете, то это недорогое и красивое приложение — для вас.
Название: When App
Издатель/разработчик: Sergey Minkin https://appleinsider.ru/mac-app-store/app-store-when-stilnye-napominaniya-o-rutinnyx-delax.html» target=»_blank»]appleinsider.ru[/mask_link]
Выражения when в Kotlin
Управлять порядком выполнения программы можно с помощью выражения when , которое выполняет разный код в зависимости от значения переменной или константы.
Синтаксис выражения when в Kotlin
Далее представлено выражение when , которое применяется на целое число:
val number = 10
when ( number ) <
0 -> println ( «Ноль» )
else -> println ( «Не-ноль» )
Вывод данного примера будет следующим:
Цель выражения when из примера выше в том, что нужно определить, равно ли число нулю или нет. В будущем будут примеры по сложнее — обещаем!
Чтобы обработать конкретный случай, добавляется значение, за которым следует знак -> , который указывает на код, который будет выполняться, если условие выполнено. Затем используется else, чтобы указать, что должно произойти для всех других значений. В отличие от других языков, таких как Java, в Kotlin нет необходимости включать оператор break в каждую ветвь, поскольку выражение when будет выполнять только первую совпадающую ветвь.
Далее дан еще один пример:
val number = 10
when ( number ) <
10 -> println ( «Это десять!» )
На этот раз проверяется если переменная содержит число 10, если это так, то выводится сообщение. Для других значений ничего не должно происходить.
Конечно, выражение when также работает с другими типами данных, не только с целыми числами. Далее дан пример с использованием строк:
val animal = «Собака»
when ( animal ) <
«Кот» , «Собака» -> println ( «$animal — Домашнее животное.» )
else -> println ( «$animal — Дикое животное.» )
Собака — Домашнее животное .
В этом примере предоставляются два значения для первого аргумента. Это означает, что если значение будет равно «Кот» или «Собака» , тогда оператор when выполнит первую ветвь выражения.
Присвоения значения через when
Выражениям when можно предоставить более одной ветки. Поскольку when является выражением, его можно использовать для возврата значения, как и выражение if . Также можно проигнорировать значение, если нужно просто использовать when в качестве оператора.
Выражение when вернет значение из первой ветви с соответствующим аргументом.
Если вы хотите вывести номер из константы number в текстовом формате, то вы можете присвоить значение с помощью выражения when следующим образом:
val number = 10
val numberName = when ( number ) <
10 -> «десять»
println ( «Неизвестный номер» )
«Неизвестный»
println ( numberName ) // Вывод: десять
В ветке else мы использовали фигурные скобки, чтобы включить в ветвь целый блок кода. Последнее значение в блоке возвращается из ветви, поэтому, если number не было в интервале (2, 4, 6, 8, 10) , тогда значением в константе numberName будет «Неизвестный» .
Продвинутые выражения when в Kotlin
В одном из прошлых уроках мы работали с if выражением, в котором используется несколько условий else для преобразования времени в строку, описывающую текущею часть дня.
Старый пример кода с использованием if
val hourOfDay = 12
val timeOfDay = if ( hourOfDay < 6 ) <
«Раннее утро»
> else if ( hourOfDay < 12 ) <
> else if ( hourOfDay < 17 ) <
«После полудня»
> else if ( hourOfDay < 20 ) <
> else if ( hourOfDay < 24 ) <
«Поздний вечер»
«НЕДЕЙСТВИТЕЛЬНЫЙ ЧАС!»
println ( timeOfDay )
Данную задачу можно переписать лаконично с помощью when выражения. Например:
val hourOfDay = 12
val timeOfDay : String
timeOfDay = when ( hourOfDay ) <
0 , 1 , 2 , 3 , 4 , 5 -> «Раннее утро»
6 , 7 , 8 , 9 , 10 , 11 -> «Утро»
12 , 13 , 14 , 15 , 16 -> «После полудня»
17 , 18 , 19 -> «Вечер»
20 , 21 , 22 , 23 -> «Поздний вечер»
else -> «НЕДЕЙСТВИТЕЛЬНЫЙ ЧАС!»
println ( timeOfDay )
Код выведет следующее:
После полудня
Помните интервалы? Что ж, вы можете использовать интервалы, чтобы упростить данное when выражение. Можно переписать приведенный выше код, используя интервалы:
val hourOfDay = 12
val timeOfDay = when ( hourOfDay ) <
in 0..5 -> «Раннее утро»
in 6..11 -> «Утро»
in 12..16 -> «После полудня»
in 17..19 -> «Вечер»
in 20..23 -> «Поздний вечер»
else -> «НЕДЕЙСТВИТЕЛЬНЫЙ ЧАС!»
println ( timeOfDay )
Это более минималистично и элегантно, чем отдельная запись значений для всех ветвей.
Когда есть несколько ветвей, выражение when выполнит первое соответствующее. Так более сжато и понятно, чем использование if выражения для данного примера.
Это также более точно, потому что использования if не обрабатывает отрицательные числа, которые здесь правильно считаются недействительными.
Также можно сопоставить ветвь с условием на основе свойства значения без каких-либо аргументов, передаваемых выражению when .
Является ли целое число четным или нечетным
Для определения является ли целое число четным или нечетным, можно использовать оператор % для нахождения остатка от деления.
Рассмотрим следующий код:
val number = 10
number % 2 == 0 -> println ( «Четный» )
else -> println ( «Нечетный» )
Первая ветвь данного when выражения использует оператор == . Это означает, что аргумент будет совпадать только тогда, когда определенное условие истинно.
В данном примере аргумент был создан таким образом, чтобы он совпадал, если значение четное, то есть если значение остатка после деления на 2 равно 0.
Другой пример более эффективного использования условий в when выражениях:
x == 0 y == 0 z == 0 -> println ( «Точка начала» )
y == 0 z == 0 -> println ( «Координата находится на оси x, где x = $x» )
x == 0 z == 0 -> println ( «Координата находится на оси y, где y = $y» )
x == 0 y == 0 -> println ( «Координата находится на оси z, где z = $z» )
else -> println ( «Где-то в пространстве где x = $x, y = $y, z = $z» )
Что делает каждая из ветвей по порядку:
- Выполняется если значения из x, y, z равны (0, 0, 0) . Это координаты точки в 3D пространстве;
- Выполняется если y = 0, z = 0 и значение x содержит любое другое значение. Это означает, что координата находится на оси x ;
- Выполняется если x = 0, z = 0 и значение y содержит любое другое значение. Это означает, что координата находится на оси y ;
- Выполняется если x = 0, y = 0 и значение z содержит любое другое значение. Это означает, что координата находится на оси z ;
- Выполняется если данные из каждой координаты разные.
Последняя ветвь с условием else используется по умолчанию. Она соответствует чему угодно, потому что нет ограничений ни на одну часть координат. Вот пример более сложного случая:
x == y -> println ( «Вдоль линии Y равен X.» )
y == x * x -> println ( «Вдоль линии Y = X^2.» )
Здесь сопоставляются строки “y равен x” и “y равен x в квадрате” . Поскольку у выражения when нет аргумента, вам не нужна ветвь else , а выражение when не будет выполнять ветвь, если нет соответствующего условия. Это основы выражений when !
Задания для проверки
Напишите when выражение, которое принимает возраст как целое число и выводит стадию жизни, относящуюся к данному возрасту. Вы можете создать свои этапы жизни или использовать нашу классификацию:
- 0-2 года Младенец (Infant);
- 3-12 лет, Ребенок (Child);
- 13-19 лет, Подросток (Teenager);
- 20-39, Взрослый (Adult);
- 40-60 лет, Средний возраст (Middle aged);
- 61+, Пожилые (Elderly).
Напишите when выражение, которое разбивает тип Pair, содержащую строку и целое число. Строка это имя, а целое число — возраст человека. Используйте те же случаи, которые вы использовали в предыдущем упражнении, чтобы вывести имя, за которым следует этап жизни. Например, «Иван взрослый.»
Источник: kotlins.org
В чём разница между when и while?
Сегодня разберём с вами не простой вопрос. Непростой, потому что здесь значение слова сразу же отражается на грамматике.
Возьмёшь одно значение, надо употребить одно из времён Simple (простых), а с другим значением только Continuous (продолженное) возможен. Вот такая интересная тема сегодня.
Ну а слова, которые мы рассмотрим, — это when и while.
WHEN
Произношение и перевод: [wen] / [вэн] — когда
Значение слова: в какой-то момент (1) или на протяжении какого-то другого действия (2)
I was busy when you called me. — Я был занят, когда ты мне позвонил.
She was taking a bath when they were watching TV. — Она принимала ванну, когда они смотрели телевизор.
Употребление:
Если when используется для связи двух частей предложения в одно целое и речь идёт о будущем времени, после when не используется будущее время, только настоящее (после when не ставится will).
Например:
When I come home, I will call you. — Когда я приду домой, я тебе позвоню.
When I will come — WRONG — неверно.
Ещё несколько примеров:
Tell me when you finish. — Скажи, когда закончишь.
When he goes to Brazil, he will swim in the ocean. — Когда он поедет в Бразилию, он искупается в океане.
WHILE
Произношение и перевод: [wail] / [уайл] – пока, когда, в то время как
Значение слова: показывает, что действие продолжалось в течение какого-то времени (подчёркивается процесс)
Примеры:
He was looking at her while she was dancing. — Он смотрел на неё, пока она танцевала.
Mat lost his keys while he was talking on the phone. — Мэт потерял ключи, когда говорил по телефону.
Употребление:
Так же, как и в случае с when, после while не употребляется будущее время. Заменяем на настоящее.
I’ll look after your cat while you are having a rest. — Я присмотрю за вашей кошкой, пока вы будете отдыхать.
В чём разница
Слово when может использоваться, когда мы говорим как о коротких действиях (фактах, не процессах), так и о чём-то продолжительном.
While мы можем употребить только тогда, когда речь идёт о продолжающемся действии, тем самым обозначая, что оно длилось на протяжении времени.
Источник: sevatu.livejournal.com