Как использовать область над SQLite в Xamarin [duplicate]

Если вы пытаетесь убедиться, что строка, которую вы ищете, не будет существовать даже после замены, вам нужно использовать цикл.

Например:

var str = 'test aabcbc';
str = str.replace(/abc/g, '');

Когда вы закончите, вы все равно будете иметь «test abc»!

. Простейшим циклом для этого было бы:

var str = 'test aabcbc';
while (str != str.replace(/abc/g, '')){
   str.replace(/abc/g, '');
}

Но это выполняет замену дважды для каждого цикла. Возможно (рискуя проголосовать), которые могут быть объединены для немного более эффективной, но менее читаемой формы:

var str = 'test aabcbc';
while (str != (str = str.replace(/abc/g, ''))){}
// alert(str); alerts 'test '!

Это может быть особенно полезно при поиске повторяющихся строк. Например, если у нас есть «a ,,, b», и мы хотим удалить все повторяющиеся запятые. [В этом случае можно было бы сделать .replace (/, + / g, ','), но в какой-то момент регулярное выражение становится сложным и достаточно медленным, чтобы зацикливаться.]

19
задан Mohammed Ali 11 May 2016 в 04:10
поделиться

2 ответа

Царство и Sqlite во многих аспектах совершенно разные.

Вот две статьи, которые вы могли бы изучить, чтобы понять основные отличия:

Сравнение свойств системы с vm SQLite 5 причин, по которым вам следует выбирать область над CoreData / SQLite

Как было предложено Славией в комментариях, взгляните также на эту статью для сравнения нескольких ORM, включая Realm.

20
ответ дан BaCaRoZzo 25 August 2018 в 13:13
поделиться

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

В Realm есть ядро ​​C ++, которое является общим для всех продуктов. Вот почему мы выпускаем для каждой платформы , а не только для языка - нам нужно включить собственное ядро. Несмотря на то, что мы поддерживаем сборку PCL вашего кода, у нас нет библиотеки PCL как таковой - во время сборки ваш код PCL будет ссылаться на соответствующую библиотеку IOS или Android.

Это означает, что, например, продукт C # обеспечивает LINQ, для запросов и использования объектов C # в качестве средства определения модели данных. Во время сборки генератор кода Fody запускается, чтобы добавить средства определения свойств и геттеры, чтобы ваши объекты C # напрямую взаимодействовали с основными данными на C ++. В отличие от обычных продуктов ORM, нет копий данных из базы данных в буферы, а затем снова в ваши объекты.

Данные в области данных отображаются в памяти, поэтому они переходят непосредственно из вашего кода в хранилище. Мы генерируем методы доступа, которые заменяют автотестеры getters и seters.

Мы используем термин zero-copy , чтобы описать это. Напротив, большинство других систем будут иметь объекты C #, которые имеют поля, поддерживающие их свойства. Эти объекты часто заполняются копированием из буфера SQLite, который был прочитан из хранилища disk . Это два уровня копирования.

18
ответ дан Andy Dent 25 August 2018 в 13:13
поделиться
Другие вопросы по тегам:

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