Ответы пользователя по тегу Kotlin
  • Где найти учебник по Котлин?

    @acwartz
    Тут должна быть ваша реклама.
    Предполагается что вы знаете Java или знакомы с ней. И тогда там все понятно ведь java ставится в сравнение. kotlinlang вполне понятен. Kotlin koans прошли хоть или только доки читали?
    Ответ написан
    3 комментария
  • Когда нужно вызывать super в переопределенном методе?

    @acwartz
    Тут должна быть ваша реклама.
    Очень зависит от класса-предка, и всей объектной модели языка программирования. Вдруг все классы где-то регистрируются и вызов super - просто данность?

    Если он делает в конструкторе работу которую нужно сделать чтобы Вы могли работать с ним, то вызов нужен.
    Например класс-предок инициализирует какие-то сокеты или ещё что, а вы решили просто своё свойство дописать,
    без super класс работать не будет как надо.
    При том вы сами решаете когда это делать, хоть не делать, хоть в начале, хоть в конце, хоть по условию.

    Например в callback методах системы Android эти вызовы должны присутствовать. Почему не знаю.

    Потому что система видит что вами определен свой код, и делегирует ему вызов системного кода. Если вы замещаете системный код (скрытый в super'ах) - не делаете вызов super (что вообще редко, ибо он завернут в исключительную конструкцию чтоб не сломать UI и дать работать хотяб системному коду, в случае ошибок в вашей программе), если не замещаете а дополняете, делаете.
    Ответ написан
    Комментировать
  • Как решить задачу с собеседования?

    @acwartz
    Тут должна быть ваша реклама.
    Предельно простая задача с циклом while + рекурсия.
    скобки образуют вызов рекурсивной функции.
    Котлин не знаю.
    Примерно так:
    function task(str) result string {
      i, j integer = 0;
      max integer = str.length;
      ch char = #0;
      while (i < max) {
        ch = str[i];
        if ch in [0..9] {
          //делаем рекурсию столько раз сколько предписано
          //начало строки которую надо обработать, не включая тек. символ и символ начала рекурсии (
          substrStart Integer = i + 2;
          //конец строки которую надо обработать, ссылается на закрывающую рекурсию скобку )
          substrEnd Integer = str.pos(")", substrStart );
          //цикл повторов выражения в скобках
          for j = 1; j < ch; j++:
            //копируем из строки 2(3(c)d) значение 3(с)d не включая скобки и текущий символ указывающий кол-во повторов
            result = result + task(str.substring(substrStart, substrEnd -1)); 
          end for;
          //Прыгаем за закрываюющую скобку т.к. этот участок обработан рекурсивно, и нужно обработать хвост если он есть, например: aaa2(3(c)dd)QQ
          //в первой итерации task("aaa2(3(c)dd)QQ")
          //тут будет переход на позици подстроки "QQ"
          i = substrEnd + 1;
        } else {
          result = result + ch;
          i = i + 1;
        }
      }
    }
    }
    Ответ написан
    7 комментариев