Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.38.117] |
|
Страницы: (32) « Первая ... 14 15 [16] 17 18 ... 31 32 ( Перейти к последнему сообщению ) |
Сообщ.
#226
,
|
|
|
Сообщ.
#227
,
|
|
|
Сообщ.
#228
,
|
|
|
Ого. Подтянулась тяжёлая артиллерия.
|
Сообщ.
#229
,
|
|
|
Я что вспомнил: есть же ещё продолжения:
#lang racket (define i-save 0) (define j-save 0) (define k-save 0) (define (save i j k) (set! i-save i) (set! j-save j) (set! k-save k) (printf "\nsaved\n")) (define (restore) (printf "restored\n") (values i-save j-save k-save)) (define N 4) (define (start #:resume? (resume? #f)) (define-values (i j k) (if resume? (restore) (values 0 0 0))) (let/cc abort (define (for-i i0) (for ((i (in-range i0 N))) (for-j i i))) (define (for-j i j0) (for ((j (in-range j0 N))) (for-k i j j))) (define (for-k i j k0) (for ((k (in-range k0 N))) (when (and (not resume?) (= i 1) (= j 2) (= k 3)) (save i j k) (abort)) (printf "[~a,~a,~a], " i j k))) (for-k i j k) (for-j i (+ j 1)) (for-i (+ i 1)) (printf "\ndone\n"))) (define (main) (start) (start #:resume? #t)) (main) ⇒ [0,0,0], [0,0,1], [0,0,2], [0,0,3], [0,1,1], [0,1,2], [0,1,3], [0,2,2], [0,2,3], [0,3,3], [1,1,1], [1,1,2], [1,1,3], [1,2,2], saved restored [1,2,3], [1,3,3], [2,2,2], [2,2,3], [2,3,3], [3,3,3], done |
Сообщ.
#230
,
|
|
|
Даже читать не хочется
|
Сообщ.
#231
,
|
|
|
Цитата D_KEY @ Даже читать не хочется Что так? Ты ж не боишься скобок, вроде. =) |
Сообщ.
#232
,
|
|
|
В php пишется break 2; Добавлено А блин, на 16ой странице у вас вообще другая тема пошла, пойду я... |
Сообщ.
#233
,
|
|
|
Цитата Serafim @ Везёт вам! Но сразу возникает вопрос: что означает "break 0;" или "break -1;" ?В php пишется break 2; 1.Я бы сказал, что "break 0;" означает ассемблерный NOP - ничего не делаем. 2."break -1;" означает "вход в ближайший цикл"! Только непонятно, ближайший спереди или сзади... |
Сообщ.
#234
,
|
|
|
Цитата Славян @ Но сразу возникает вопрос: что означает "break 0;" или "break -1;" ? Очевидно, ошибку компиляции |
Сообщ.
#235
,
|
|
|
Цитата OpenGL @ Да логично, конечно, но хочется, чтобы это перестало быть ошибкой и вот тут и приходится задуматься над возможной допустимой реализацией такого поведения. Очевидно, ошибку компиляции |
Сообщ.
#236
,
|
|
|
Цитата Славян @ Но сразу возникает вопрос: что означает "break 0;" или "break -1;" ? Сейчас - ошибку (EngineException). До версии 5.4 break 0 означало тоже самое, что и break 1, т.е. выход из цикла первого уровня. |
Сообщ.
#237
,
|
|
|
Цитата Славян @ но хочется, чтобы это перестало быть ошибкой и вот тут и приходится задуматься над возможной допустимой реализацией такого поведения. Какой смысл? Давай тогда вообще break 3.1415926 или break (1 - 3i) введём, чего мелочиться-то |
Сообщ.
#238
,
|
|
|
Смысл удаления в том, что до той же версии (5.4) внутрь break допускалось передавать переменные (т.е. можно было указывать уровень цикла с помощью int), что позволяло творить магию, которая могла породить подобные конструкции (циферку 0 и отрицательные значения (включая даже флоты и строковые типы)), дабы избежать этих проблем и упростить жизнь - оно приводилось к единице.
Потом это поведение вырезали (т.е. сейчас можно указывать только константные значения и только int > 0), чтоб у читающих код не было проблем с психикой, когда они видят break mt_rand(0, 9999);. Как следствие убрали это неявное приведение, т.к. никто в своём уме не будет писать break 0; - это не имеет смысла. |
Сообщ.
#239
,
|
|
|
Цитата OpenGL @ Да, это будет после того, как научимся работать с целыми. Какой смысл? Давай тогда вообще break 3.1415926 Цитата OpenGL @ Не, пока код у нас линеен - плоские переходы нельзя ввести. Вот будет граф кода пушистее - там=тогда и можно будет и о таком подумать... или break (1 - 3i) введём, чего мелочиться-то |
Сообщ.
#240
,
|
|
|
А зря. Это был прекрасный код конём для взбунтовавшегося ИИ. Типа "коли ты такой умный, ну-ка, исполни break -i, родимый", и делов. Теперь вся надежда только на Сару или Нео.
|