Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Как while перевести в for + сортировка (https://javascript.ru/forum/server/6502-kak-while-perevesti-v-sortirovka.html)

Gvozd 01.12.2009 20:40

e1f,
можно пример кода, как это там выглядит?

e1f 01.12.2009 20:43

for my $item (@items) {
    # do something
}

Gvozd 01.12.2009 21:15

так я и думал
это не счетчик с циклом, а совместный цикл, предназначенный для перебора элементов хэш-массива
с таким же успехом мог перевести тему на javascript, и сказать что в цикле for...in нету никаких счетчиков.
или написать свой язык в котором конструкцией for обозначается что-угодно
когда я писал об уместности употребления именно цикла со счетчиком, который в PHP записывается как for(;;)
то, что ты перескочил на другую синтаксическую структуру из другого языка - это хреновый аргумент.
даже хуже чем привел Kolyaj в данном обсуждении
Былинный отказ десу!

Kolyaj 01.12.2009 22:08

Цитата:

Сообщение от Gvozd
даже хуже чем привел Kolyaj в данном обсуждении

Я не приводил никаких аргументов, я сказал, что ты хреновые привел :)

В данном конкретном случае for уместней, тем более, что даже счетчик есть.

Gvozd 01.12.2009 22:16

Цитата:

Сообщение от Kolyaj
Я не приводил никаких аргументов, я сказал, что ты хреновые привел

Да, я в курсе)
именно к этому я и отсылаю

e1f 02.12.2009 01:54

Цитата:

Сообщение от Gvozd (Сообщение 36929)
так я и думал
это не счетчик с циклом, а совместный цикл, предназначенный для перебора элементов хэш-массива

ЩИТО? Учите матчасть (aka perl) @items -- именно массив, а ни вкоем случае ни хэш-массив. Хэш -- это %items, и перебор его ключей есть
Код:

for my $item (keys %items)
значений соответственно
Код:

for my $item (values %items)
Отказ не принят :)

Gvozd 02.12.2009 02:24

Цитата:

Сообщение от e1f
@items -- именно массив

да, хоть объект содержащий свойства.
все суть контейнер.
без контейнера эта синтаксическая конструкция не употребляется.
точно также как foreach($array as $key=>$value) (PHP) или for(key in array) (JS)
если нету array-а, то и конструкции эти использовать нельзя.

или в Perl цикл со счетчиком, и цикл для перебора индексов/ключей/свойств есть одна синтаксическая структура?
что-то не верится

но даже если это так, я изначально говорил прежде всего о PHP
не о JS(хотя для него тут мое мнение такое же)
не о C(в нем я наоборот часто себе позволяю использование циклов "не по правилам", в связи с разностью областей моего личного их знания и применения)
не о Perl, в котором я не специалист
не о Brainfuck в котором один вид цикла/условия, и не может быть вопроса "что использовать"(зато вопрос "как сделать" возникает)))

PS непринятие отказа отклонено :)

e1f 02.12.2009 10:01

Цитата:

Сообщение от Gvozd (Сообщение 36944)
или в Perl цикл со счетчиком, и цикл для перебора индексов/ключей/свойств есть одна синтаксическая структура?

Бинго! ;)
Цитата:

Сообщение от Gvozd (Сообщение 36944)
но даже если это так, я изначально говорил прежде всего о PHP

Ну, из заявления
Цитата:

Сообщение от Gvozd (Сообщение 36944)
так как считаю, что для простейших задач циклы должны использоваться так, как это изначально предполагается, то есть for-когда известно количество итераций, а while-когда неизвестно количество итераций, но известно другое условие выхода

сложно судить, о языке именно идет речь, спор скорее о методологии программирования :)

А насчет JS, так я часто использую, к примеру, for таким вот образом:
for (var i = array.length; i--; ) {
    // do something
}

Не надо кешировать/перезапрашивать длину, экономим на условии <. Тоже неправильный, по-вашему, подход к for'у?

P.S. Все равно отказ не принят :)

Gvozd 02.12.2009 20:42

Цитата:

Сообщение от e1f
Бинго!

блин, ну мне даже интересно, как же именно в перле записывается цикл со счетчиком. напиши, пожалуйста
Цитата:

Сообщение от e1f
Ну, из заявления... ...сложно судить, о языке именно идет речь

Это следует из изначальной темы, хотя, мы уже плавно перешли в офффтоп
Цитата:

Сообщение от e1f
Тоже неправильный, по-вашему, подход к for'у?

Бинго!:)
просматривая код вскользь между строк, не скажешь сразу, что этот цикл делает и в каком порядке.
в отличии от наверняка и всеми узнаваемой конструкции
for(i=0;i<arr.length;i++)

e1f 02.12.2009 23:45

Цитата:

Сообщение от Gvozd (Сообщение 37022)
блин, ну мне даже интересно, как же именно в перле записывается цикл со счетчиком. напиши, пожалуйста

Ты не поверишь :)
Код:

for ( my $i = 0 ; $i < @items ; $i++ ) {
    # do
}

либо ( for и foreach -- полностью взаимозаменяемы )
Код:

foreach ( my $i = 0 ; $i < @items ; $i++ ) {
    # do
}



Часовой пояс GMT +3, время: 23:29.