Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2016, 23:46
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 1  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
По умолчанию Возможно в Switch указывать интервалы?

Доброго

хочу сделать более удобочитаемый код вместо множество if (bla)&&(bla), заменить на switch, но проблема в том, что у меня интервалы чисел 1..30, 60..120. В других языках есть возможность задать интервалы, а вот как as3 не пойму, перечислять каждый case не вариант, очень много будет

Старый 19.03.2016, 23:53
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
switch для перечисления констант, для сравнивания интервалов юзайте if.
__________________
Дети не должны знать о своих родителях

Старый 20.03.2016, 09:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
В других языках есть возможность задать интервалы
Приведи пример языка. Ни разу не встречал, интересно посмотреть как это, а главное где

В качестве решения приходит в голову только одно, использовать метод компаратор
Код AS3:
var number:int = 9;
switch (true) {
   case inInterval(number, 0, 10):
       trace("попадает в интервал 0 - 10");
       break;
   case inInterval(number, 100, 200):
       trace("попадает в интервал 100 - 200");
       break;
}
 
private function inInterval(value:Number, min:Number, max:Number):Boolean {
     return value >= min && value <= max;
}
__________________
Ко мне можно и нужно обращаться на ты)


Последний раз редактировалось caseyryan; 20.03.2016 в 11:08.
Старый 20.03.2016, 10:53
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Гы, а в свиче можно були указывать? Не знал.

Старый 20.03.2016, 11:05
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Гы, а в свиче можно були указывать? Не знал.
А, это я фигню написал)) Только сейчас понял
Поправил. Там надо было true вместо number
__________________
Ко мне можно и нужно обращаться на ты)

Старый 20.03.2016, 11:48
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Приведи пример языка. Ни разу не встречал, интересно посмотреть как это, а главное где
Почти все модные умеют.
Пример из моего любимого Ruby:
Код:
result = case a
  when 10..20 then 'ranges!'
  when 20,25,30 then 'separate values!'
  else 'somebody calls me "default"...'

Старый 20.03.2016, 11:50
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Хм, ну это не свитч. Это ближе к простым условным операторам. Я то думал что в свитчах как-то можно интервал задать. Но да, штука полезная
__________________
Ко мне можно и нужно обращаться на ты)

Старый 20.03.2016, 12:22
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 8  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
где-то в инете видел, щас не могу найти, но вот нашёл интерсное решение для одинаковых интервалов
Код AS3:
switch ( (n-1) / 100 ) {
   case 0: break; // 1-100
   case 1: break; // 100-200
   // ...
}

Старый 20.03.2016, 16:05
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 9  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Приведи пример языка
Swift:

Код:
switch approximateCount {
  case 0:
      naturalCount = "no"
  case 1..<5:
      naturalCount = "a few"
  case 5..<12:
      naturalCount = "several"
  case 12..<100:
      naturalCount = "dozens of"
  case 100..<1000:
      naturalCount = "hundreds of"
  default:
      naturalCount = "many"
}

Старый 20.03.2016, 16:30
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 10  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
точняк, swift

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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