Печать обратной петли в Котлине [дубликат]

__proto__ - это фактический объект, который используется в цепочке поиска для разрешения методов и т. д. prototype - это объект, который используется для сборки __proto__ при создании объекта с помощью new:

( new Foo ).__proto__ === Foo.prototype;
( new Foo ).prototype === undefined;
22
задан jjnguy 5 March 2012 в 08:42
поделиться

6 ответов

Используйте downTo как в:

for (n in 100 downTo 1) {
//
}
29
ответ дан Hadi Hariri 21 August 2018 в 03:15
поделиться
  • 1
    Почему это не «для (n в 100..1)»? Нельзя ли согласиться, что если первое число больше, тогда диапазон рассчитывается в обратном направлении? – x2bool 2 September 2014 в 11:09

Как указано другими, правильный ответ:

for (n in 100 downTo 1) {
    println(n)
}

Но почему команда Котлина выбрала 100 downTo 1 vs 100..1?

Я думаю, что синтаксис 100..1 было бы плохо, если мы попытаемся использовать переменные вместо литералов. Если мы набрали

for (n in b..a)

, тогда было бы непонятно, какой цикл мы хотели использовать.

Мы могли рассчитывать на обратный отсчет, но если b окажется меньше a, то наша программа будет на самом деле рассчитывать вверх! Это было бы источником ошибок.

2
ответ дан Escape Velocity 21 August 2018 в 03:15
поделиться

Реверсированные диапазоны поддерживаются с помощью унарного оператора минус -, как в -(1..100).

Чтобы вызвать метод в этом диапазоне, вам необходимо окружить его круглыми скобками, как в (-(1..100)).foreach { println(it) } .

7
ответ дан Franck Rasolo 21 August 2018 в 03:15
поделиться
  • 1
    Есть ли возможность сделать функцию rangeTo () более умной и обрабатывать это автоматически? Наличие отрицательного диапазона для меня означает подсчет от -1 до -100. – jjnguy 5 March 2012 в 16:05
  • 2
    Я предлагаю вам взглянуть на следующие проблемы, связанные с диапазонами в Котлине, и представить новый вопрос, подробно объяснив ваше предложение: KT-861 , KT-1045 , KT-1076 [/ д2] – Franck Rasolo 5 March 2012 в 22:19

Если вы посмотрите на точную страницу, с которой вы связались, есть предложение для функции reversed, которая позволила бы вам делать for (n in (1..100).reversed()), но она пока не реализована. Оператор .. всегда подсчитывает.

1
ответ дан hobbs 21 August 2018 в 03:15
поделиться
0
ответ дан CoolMind 31 October 2018 в 22:24
поделиться
0
ответ дан letner 31 October 2018 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: