Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Поведение return и break внутри цикла for (http://www.flasher.ru/forum/showthread.php?t=212960)

rambler 05.06.2016 19:21

Поведение return и break внутри цикла for
 
Доброго времени суток уважаемые участники!
Помогите разобратся.
Написал функцию и чуть запуталься в инструкции, что важнее в цикле при остановке return или break.
Заранее спасибо.
Код AS3:

private function zeroTime (time:String):String{
        for(var i:int = 0; i < time.length; i++){
                if(time.charAt(i) == "."){// если находим точку то обрезаем и добавляем ноль
                        time = time.substr(0,i);
                if(time.length == 1){// если длинна один символ добавляем ноль
                        time = "0" + time;
                        return time;
                        break;
                }else{       
                        return time;// если два символя ничего не делаем возвращаем и все
                        break;
                }
        }
 
}
if(time.length == 1){// если после выхода из цикла длинна один символ добавляем ноль
        time = "0" + time;
        return time;
}
return time;
}


undefined 05.06.2016 19:28

return - производит немедленный возврат значения с выходом из функции
break - прерывает исполнение цикла, внутри которого он встретился.

rambler 05.06.2016 19:37

ясно одно другому не мешает.
спасибо.
мне казалось, что return останавливает все.

in4core 05.06.2016 21:26

Цитата:

мне казалось, что return останавливает все.
Ну как бы так и есть, останавливает.

Цитата:

return time;
break;
Это избыточно. Достаточно первого

caseyryan 06.06.2016 11:33

Цитата:

Сообщение от in4core (Сообщение 1194603)
Это избыточно. Достаточно первого

Это даже не избыточно, а не правильно. В других языках это даже не сокмпилируется, а просто кинет эксепшен типа UnreachableStatement.

Wolsh 06.06.2016 15:04

Код AS3:

                private function timeFormat(t:String):String 
                {
                        t = "0" + t + ".";
                        return t.substr(t.indexOf(".") - 2, 2);
                }


rambler 07.06.2016 19:52

caseyryan спасибо понял

5 строчек кода против 17. знание сила.

Добавлено через 35 минут
доброго времени суток. понимаю что начинаю наглеть. Если у кого есть время не могли бы вы посмотреть мой код. Буду рад любым замечаниям.
Код AS3:

private function checkTimeNumber(hour:String):String{// time validator
if(hour.length === 4 && hour.substring(0,1) < 3 && hour.substring(2,3) < 6){
 
        if(hour.substr(0,1) == 2 && hour.substr(1,1) < 4){
        return per(hour);
 
}else if(hour.substr(0,1) <= 1) {
        return per(hour);
 
}
 
        trace("false");
 
}
 
trace("false");
}
 
function per(hour:String):String{
var hhour:Number = Number(hour.substring(0,2));
var mmin:Number = Number(hour.substring(2));
return checkTime(hhour,mmin);
}


Wolsh 07.06.2016 20:39

substr() возвращает строку, String, а Вы сравниваете ее с числом. Так нельзя. Чтобы сравнивать >=< надо получить ЧИСЛО, содержащееся в тексте строки.

rambler 07.06.2016 21:08

понял. явное преобразование строки в числа.
Код AS3:

var h1:int = int(hour.substr(0,1));
var h2:int = int(hour.substr(1,1));
var m1:int = int(hour.substr(2,1));
var m2:int = int(hour.substr(3));


caseyryan 07.06.2016 21:28

Цитата:

Сообщение от rambler (Сообщение 1194671)
понял. явное преобразование строки в числа.
Код AS3:

var h1:int = int(hour.substr(0,1));
var h2:int = int(hour.substr(1,1));
var m1:int = int(hour.substr(2,1));
var m2:int = int(hour.substr(3));


Можно поступить проще. Если у тебя на входе имеется однотипная строка времени, типа 13:52:26, где первый разряд - часы, второй - минуты, и третий - секунды, то самый простой вариант как получить каждое число иp них - будет разделить строку по разделителям, в данном случае двоеточие, получив на выходе массив, и потом содержимое каждой его ячейки привести к типу int
Код AS3:

var timeString:String = "13:52:26";
var array:Array = timeString.split(":"); // тут получаем массив содержащий строки 13, 52, 26 в трех первых ячейках
var hours:int = parseInt(array[0]);
var minutes:int = parseInt(array[1]);
var seconds:int = parseInt(array[2]);



Часовой пояс GMT +4, время: 12:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.