1. C++ / Говнокод #16074

    +12

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    template<typename T, typename T1>
    	class TSwitch
    	{
    		private:
    			std::function<T1(T)> _functionSwitch;
    			std::function<void(T)> _defaultFunction;
    			std::map<T1, std::function<void(T)> > _map;
    		private:
    			IActorPtr _protocol;
    			IActorPtr _port;
    			IActorPtr _listParam;
    			IActorPtr _managerData;
    
    		public:
    		TSwitch(std::function<T1(T)> functionSwitch,std::map<T1, std::function<void(T)> > mapSwitch):_functionSwitch(functionSwitch)
    																									,_defaultFunction([](T value){std::cout<<"no way";})
    																									,_map(mapSwitch){}
    		TSwitch(std::function<T1(T)> functionSwitch, std::function<void(T)> defaultValue,std::map<T1, std::function<void(T)> > mapSwitch):_functionSwitch(functionSwitch)
    																																		,_defaultFunction(defaultValue)																																,_map(mapSwitch){}
    		virtual ~TSwitch(){}
    		public:
    			void switches(T value)
    			{
    				auto it=_map.find(_functionSwitch(value));
    				if (it==_map.end()) {_defaultFunction(value); return;}
    				it->second(value);
    			}
    	};

    Вот такая замена switch. Отстойно не правда-ли?

    Запостил: IKing, 29 Мая 2014

    Комментарии (6) RSS

    • Мило, но где свитч? Как юзать?
      Ответить
    • Чего так в ширину-то распидорасило?
      Ответить
    • http://habrahabr.ru/post/166201/
      Вот вам настоящий свитч
      Ответить
      • Редкая действительно неплохая, познавательная статья с хабры.
        Ответить
      • С одной стороны свищи по строкам сами по себе не особо нужны (ни разу не использовал, мап и енумов хватало с головой).
        Но с другой отлично иллюстрирует насколько кресты гибкие, если сильно хочется можно изъебнуться и впилить туда практически любую мыслимую и немыслимую дрянь.
        Ответить
    • паттерн матчинг
      Ответить

    Добавить комментарий