Что такое LINQ для событий a.k.a RX Framework?

Только одно дополнение к ответам: если все эти методы возвращают false, даже если строки кажутся равными, возможно, что есть пробел слева и справа от одной строки. Итак, просто положите .trim() в конец строк перед сравнением:

if(s1.trim() === s2.trim())
{
    // your code
}

Я потерял часы, пытаясь выяснить, что не так. Надеюсь, это поможет кому-то!

30
задан Ruben Bartelink 11 February 2010 в 10:25
поделиться

4 ответа

Команда .NET Rx (это не официальное название) обнаружила, что любую последовательность push (события, обратные вызовы) также можно рассматривать как последовательность pull (как мы обычно делаем при доступе к перечисляемым объектам). - или они Двойственны по своей природе. Короче говоря, паттерн наблюдатель / наблюдаемый - это двойственный паттерн перечисления.

Так что же крутого в этой двойственности?

Все, что вы делаете с последовательностями вытягивания (читайте кодирование в декларативном стиле), также применимо к последовательностям выталкивания. Вот несколько аспектов. Вы можете создавать Observable из существующих событий, а затем использовать их как первоклассные граждане .NET, то есть вы можете создать наблюдаемый объект из события и предоставить его как свойство.

Поскольку IObservable является математическим двойником IEnumerable, .NET Rx облегчает LINQ над последовательностями push, такими как Events, во многом как LINQ над IEnumerables

Он дает большую свободу для создания новых событий - вы можете создавать определенные события из общих событий.

.NET Rx представляет два интерфейса, IObservable и IObserver, которые «предоставляют альтернативу использованию адаптеров ввода и вывода в качестве производителя и потребителя источников и приемников событий», и вскоре он станет де-факто для написания асинхронного кода в декларативным образом. Вот краткий пример.

//Create an observable for MouseLeftButtonDown

var mouseLeftDown=Observable.FromEvent<MouseButtonEventArgs>  
        (mycontrol,"MouseLeftButtonDown");  

//Query the above observable just to select the points
var points = from ev in mouseEvents  
                 select ev.EventArgs.GetPosition(this);  

//Show points in the window's title, when ever user
//presses the left button of the mouse
points.Subscribe(p => this.Title = "Location ="  
                                        + p.X + "," + p.Y);

Вы также можете просмотреть эти сообщения, чтобы получить подробную информацию о голове и хвосте. Также обратите внимание на связанный исходный код.

Ознакомьтесь с этим набором статей

25
ответ дан 28 November 2019 в 00:14
поделиться

Подробнее об этом можно прочитать здесь: http://themechanicalbride.blogspot.com/2009/07/introduction-rx-linq-to-events.html

Мое первое знакомство было с этим блогом, когда я читал его книгу о F #: http://tomasp.net/articles/reactive-ii-csevents.aspx

В основном я понимаю, что когда вы пишете обработчик событий для движений мыши, например, вы можете захотеть непрерывно фиксировать эти событий, и, возможно, у вас будет возможность подсчитать, сколько движений или щелчков, но, по сути, вы хотите использовать эту информацию не только в качестве обработчика событий. Поэтому просто рассматривайте события как непрерывный поток.

5
ответ дан 28 November 2019 в 00:14
поделиться

Править

Исходный ответ, представленный ниже, был дан до Subversion v1.8, в котором был представлен способ установки игнорирования уровня репозитория по умолчанию (называемого svn: global-ignores ) без переопределения / замены свойства svn: ignore в корневом каталоге и в каждом отдельном подкаталоге. Начиная с версии 1.8, лучший способ добиться желаемого - это вызвать следующую команду (заслуга TManhente):

svn propset svn:global-ignores '*.o' .

В более ранних версиях (и в более поздних версиях) вы все еще можете использовать подход, указанный в исходном ответе ниже ; однако имейте в виду, что это предполагает, что вы в порядке с заменой / перезаписью свойства svn: ignore в каждом подкаталоге ... Объекты. Он состоит из пары интерфейсы IObserver / IObservable, которые представляют собой push-ориентированные или наблюдаемые, коллекции, а также библиотека методы расширения, реализующие Стандартные операторы запросов LINQ и другое полезное преобразование потока функции.

4
ответ дан 28 November 2019 в 00:14
поделиться

Я думаю, что сущность RX является , изменяя угол , с которым мы смотрим на информацию. Естественно, каждая часть информации является результатом некоторых процессов, который происходит в пространстве временного пространства. Традиционный подход работает с проекцией процесса в «Текущий» временной плоскости времени, теряя детали измерения времени в результате.

RX работает с проекцией до некоторого другого измерения, захватывая временной компонент, поэтому неудовлетворительно LINQ до RX - это Supperet Regular Linq.

4
ответ дан 28 November 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: