- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
struct IText{
typedef boost::shared_ptr<IText> SPtr;
virtual void draw() = 0;
virtual void add(const SPtr&) {
throw std::runtime_error("IText: Can't add to a leaf");
}
virtual void remove(const SPtr&){
throw std::runtime_error("IText: Can't remove from a leaf");
}
};
struct CompositeText: public IText{
void add(const SPtr& sptr){
children_.push_back(sptr);
}
void remove(const SPtr& sptr){
children_.remove(sptr);
}
void replace(const SPtr& oldValue, const SPtr& newValue){
std::replace(children_.begin(), children_.end(), oldValue, newValue);
}
virtual void draw(){
BOOST_FOREACH(SPtr& sptr, children_){
sptr->draw();
}
}
private:
std::list<SPtr> children_;
};
struct Letter: public IText{
Letter(char c):c_(c) {}
virtual void draw(){
std::cout<<c_;
}
private:
char c_;
};
int main(){
CompositeText sentence;
IText::SPtr lSpace(new Letter(' '));
IText::SPtr lExcl(new Letter('!'));
IText::SPtr lComma(new Letter(','));
IText::SPtr lNewLine(new Letter('\n'));
IText::SPtr lH(new Letter('H')); // letter 'H'
IText::SPtr le(new Letter('e')); // letter 'e'
IText::SPtr ll(new Letter('l')); // letter 'l'
IText::SPtr lo(new Letter('o')); // letter 'o'
IText::SPtr lW(new Letter('W')); // letter 'W'
IText::SPtr lr(new Letter('r')); // letter 'r'
IText::SPtr ld(new Letter('d')); // letter 'd'
IText::SPtr li(new Letter('i')); // letter 'i'
IText::SPtr wHello(new CompositeText);
wHello->add(lH);
wHello->add(le);
wHello->add(ll);
wHello->add(ll);
wHello->add(lo);
IText::SPtr wWorld(new CompositeText); // word "World"
wWorld->add(lW);
wWorld->add(lo);
wWorld->add(lr);
wWorld->add(ll);
wWorld->add(ld);
sentence.add(wHello);
sentence.add(lComma);
sentence.add(lSpace);
sentence.add(wWorld);
sentence.add(lExcl);
sentence.add(lNewLine);
sentence.draw(); // ptrints "Hello, World!\n"
IText::SPtr wHi(new CompositeText); // word "Hi"
wHi->add(lH);
wHi->add(li);
sentence.replace(wHello, wHi);
sentence.draw(); // ptrints "Hi, World!\n"
sentence.remove(wWorld);
sentence.remove(lSpace);
sentence.remove(lComma);
sentence.draw(); // ptrints "Hi!\n"
Если уже видел - проходи мимо. Некоторые не видели. Какой смысл ходить и кричать "фу! я это уже видел!"? Ну молодец, что видел. Возьми с полки пирожок.
Хотя пример да, синчический. Куда прикольнее есть пример вычисления факториала на хаскеле в несколько страниц, с использованием жуткого матана. ООП-то ещё фигня.
Это, кстати, не функциональные плюшки - типизация/монады и проч. это отдельная от функциональщина штука, просто в ФЯ часто встречаемая.
http://www.mmonline.ru/forum/read/5/6012/
Так вот, в учебнике Камынина — матан концентрированный.
А если в дополнение к лектору Камынину семинаристом Штерн, то это просто какая-то квинтэссенция матана получается...
Кто не верит, может первым бросить в меня Фихтенгольцем.
как короче сделать чтобы ">" в ">" не преврщался?
Формально математический анализ — «часть математики, в котором математические объекты изучаются методом пределов (методом бесконечно малых)» <...>. Но, поскольку сферическое быдло в вакууме понятий не имеет, чем диффуры отличаются от теории графов, то матаном обзывается вообще вся высшая математика, а то и просто любые записи со «страшными» формулами.
:)
и XOR сделать
Матан-наци негодует!
А потом спрашиваю, откуда этот работник появился, что паттерн знает, а суёт его во все щели, где он хоть чуть чуть становится... Толку от таких знаний никаких, а то и вред...
Класс.
Меня смыли в унитас,
Класс.
Я наконец признаю себя говном и сливаюсь.
Я клянусь обожествлять и почитать xXx_totalwar. Он всегда прав! Тому, кто скажет обратное, я надаю по морде!
Теперь у каждого юзера ID проверять придётся!
Видимо, я его-таки задел..)
p.s.
> с одинаковым отображаемым именем?
возможно, буквы другие: прописная L и заглавная i в латинице пишутся одинаково... lI
или вставил "нулевой" символ, который говнокодерский говнокод.ру проглотил) ФФ немного по-разному отображает имена (разное расстояние между W и e)
(только заметил, что 22 минуты назад Webkill об этом уже написал)
А есть разница? о_О Это как ?
Нихуя.
Это не я.
Мне почему-то кажется, что это просто стишок в рифму. :-[
Сам ты говнокодерский. Сам ты сейчас у меня будешь проглатывать! Ты свои убивающие веб сайты видел?
Ну никому верить нельзя!)
у одного небось e русская, а у другого -- латинсая
Помимо уже упомянутых, i украинского и е русского, если не присматриваться (в моем стандартном линуксовом фонте) (ⅼΙӀӏIןا) вместо l, ⅰ вместо i, Ԝ вместо W.
Правда, с кернингом беда.
ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂ
ⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ
Слабо такое зафейкать?
А почему твой ник упорно читается как ikarus-gay?
Про символы: зависит не столько от браузера, сколько от комплекта шрифтов. Ни один шрифт не содержит полного Unicode (такие проекты были, правда шрифт сильно жрёт память). Так что, увлекаясь Unicode, можно нарваться на то, что у кого-нибудь нужный шрифт отсутствует, и ник нечитаем.
Вебкилл 2.0!
Черт, набрал букв в скобочках сослепу:)
Убийца убийцы интырнетов!
И еще я клон нила.
Где здесь UTF-8?
http://www.youtube.com/watch?v=J61-afTnLho
Классно!
ВоруйУбивай!
Анархия!
Тимур и его команда.
Они не испугались прихода фашистов и продолжили рисовать красные звезды на домах красноармейцев.
Яъ
pushkoff
хХх_totalwar
cfdev
TarasB
nil
Все личности расположены в порядке эпичности. Хотя последний просто прикольно шутит и на эпичность, в моём понимании, не катит.
PS. Или Восток Дальний и какого-нибудь Дерсу-Узала!
Мне тоже есть чего сказать про C++. Но только я скажу, как меня сразу обосрут и заминусуют, а меня это смущает. Тем не менее, я являюь крутейшим специалистом по скриптовому программированию под юниксом! Суровые мужики из 3547 не могут сдержать рыданий и скрежета зубовного, когда созерцают мой код — эталон краткости, читабельности и элегантности, искрометно использующего тонкие моменты стандарта!
Кстати, давеча с Эриком Блейком по поводу find срался тоже я, и счел, что он мудак, потому что, во-первых, он мудак, во-вторых, не умеет вести дискуссию, и в-третьих, не умеет трактовать стандарт. Да и вообще, кто такой Эрик Блейк?
Поэтому я завел себе клона, под которым буду резать правду-матку! Но вот сменю я ник и аватарку, чтобы не выкупили, а умище, умище-то куда девать?
Кстати, %username%, ты уже завел себе Webkill-а?
Меня заводить не нужно. Я сам завожусь. Вот я со вчерашнего дня пишу мега прогу. WEBKILLOS. На PHP уже написал обработку прерываний. Сборщик мусора, встроенный в систему. Уже есть драйвер для мышки. Для клавиатуры пока не успел написать. Но это впринципе не нужно. У меня будет RAD система быстрой разработки программ, встроенная в систему. Она делает прорыв в искустве программирования мышкой. Для начала эта великая операционная система будет стоить 347 $. Потом я подниму цену раза в 4, когда появится демо версия.
А может, такое задание было. Знаете, дают такие изучащим ООП.
IMHO: на свете есть только один говноязык -- это PHP. Остальные вполне могут сущестовать -- даже basic и даже java script.
Я сам — мне стыдно в этом признаться — пару лет назад отошел от системного программирования на юниксе и год программировал на VB и VBS. Ну вообще ничего знать не надо, настолько все очевидно и сопряжено — строить какие-то отчеты по выборкам из БД делается на раз! За это микрософту респект.
Но шаг влево или шаг вправо уже чреваты неиллюзорной еблей и борьбой против очевидности. Вторая сторона медали...
ЗЫ: Хочу написать свою книжку по PHP. У меня уже много идей есть.
>>Хочу написать свою книжку
эталол.