اسٹرÙÚ¯ Ø¢Ø¦Û ÚÛز
ÛÛ Ù Ø¬Ú¾Û Ù ÙÙÛ ÙاÙÛ Ø§Ú©Ø«Ø± درخÙاستÙÚº Ù ÛÚº Ø³Û Ø§ÛÚ© ÛÛØ Ø§Ø³ ÙÛÛ ÛÛاں اسٹرÙÚ¯ Ø¢Ø¦Û ÚÛز Ú©Û Ø§Ø³ØªØ¹Ù Ø§Ù Ø³Û Ù ØªØ¹Ù٠اÛÚ© سب٠ÛÛÛ
اÛزار Ù ÙØ§Ù Û Ø·Ùر پر اسٹرÙÚ¯ Ø¢Ø¦Û ÚÛز Ú©Û Ø٠اÛت ÙÛÛÚº کرتا ÛÛØ Ø§Ùر اس Ú©Û Ø§ÛÚ© اÚÚ¾Û ÙØ¬Û ÛÛ: اÙÙ¹Ûجر Ø¢Ø¦Û ÚÛز بÛت زÛØ§Ø¯Û Ù Ùثر اÙر تÛز ÛÛÚºÛ Ø®Ø§Øµ Ø·Ùر پر ÙÙکس Ú©Û ÙÛÛØ Ø§Ø³Ù¹Ø±ÙÚ¯ Ø¢Ø¦Û ÚÛ Ú©Ø§ اÙÙر ÛÛÚ Ø¨Ûت اÛÙ ÛÛÛ
Ù ÛÚº س٠جھتا ÛÙÚº Ú©Û Ø¨Ø¹Ø¶ اÙÙات آپ ک٠بÛرÙÙÛ ÚÛٹا ذخÛØ±Û Ú©Ø±Ùا Ù¾Úتا ÛÛ Ø¬Ù UUIDs Ûا دÛگر غÛر Ø¹Ø¯Ø¯Û Ø¢Ø¦Û ÚÛز استع٠ا٠کرتا ÛÛÛ Ù ÛÚº اسٹرÙÚ¯ Ø¢Ø¦Û ÚÛ Ú©Ù Ø¢Ù¾ Ú©Û Ø¢Ø¨Ø¬ÛÚ©Ù¹ Ù ÛÚº بطÙر Ù¾Ø±Ø§Ù¾Ø±Ù¹Û Ø§Ø³Ù¹Ùر کرÙÛ Ø§Ùر 64 بٹ اÙÙ¹ بÙاÙÛ Ú©Û ÙÛÛ ØªÛز رÙتار ÛÛØ´ ÙÙاذ کا استع٠ا٠کرÙÛ Ú©Û ØªØ¬ÙÛز کرتا ÛÙÚº Ø¬Ø³Û Ø¨Ø·Ùر Ø¢Ø¦Û ÚÛ Ø§Ø³ØªØ¹Ù Ø§Ù Ú©Ûا جا سکتا ÛÛÛ
@collection
class User {
String? id;
Id get isarId => fastHash(id!);
String? name;
int? age;
}
اس ÙÙØ·Û Ùظر Ú©Û Ø³Ø§ØªÚ¾Ø Ø¢Ù¾ ک٠دÙÙÙÚº جÛاÙÙÚº Ù ÛÚº Ø³Û Ø¨ÛترÛÙ Øاص٠ÛÙتا ÛÛ: ÙÙکس Ú©Û ÙÛÛ Ù Ùثر Ø¹Ø¯Ø¯Û ÚÛز اÙر اسٹرÙÚ¯ Ø¢Ø¦Û ÚÛز استع٠ا٠کرÙÛ Ú©Û Ø§ÛÙÛتÛ
Ùاسٹ ÛÛØ´ ÙÙÚ©Ø´Ù
٠ثاÙÛ Ø·Ùر Ù¾Ø±Ø Ø¢Ù¾ Ú©Û ÛÛØ´ ÙÙÚ©Ø´Ù Ù ÛÚº اعÙÛÙ° ٠عÛار ÛÙÙا ÚاÛÛÛ (آپ ک٠تصاد٠ÙÛÛÚº ÚاÛÛÛ) اÙر تÛز ÛÙÙا ÚاÛÛÛÛ Ù ÛÚº Ù ÙØ¯Ø±Ø¬Û Ø°ÛÙ ÙÙاذ ک٠استع٠ا٠کرÙÛ Ú©Û Ø³Ùارش کرتا ÛÙÚº:
/// FNV-1a 64bit hash algorithm optimized for Dart Strings
int fastHash(String string) {
var hash = 0xcbf29ce484222325;
var i = 0;
while (i < string.length) {
final codeUnit = string.codeUnitAt(i++);
hash ^= codeUnit >> 8;
hash *= 0x100000001b3;
hash ^= codeUnit & 0xFF;
hash *= 0x100000001b3;
}
return hash;
}
اگر آپ اÛÚ© ٠ختÙÙ ÛÛØ´ ÙÙکش٠کا اÙتخاب Ú©Ø±ØªÛ ÛÛÚºØ ØªÙ ÛÙÛÙÛ Ø¨ÙائÛÚº Ú©Û ÛÛ 64 بٹ اÙÙ¹ Ùاپس کرتا ÛÛ Ø§Ùر کرپٹÙگراÙÚ© ÛÛØ´ ÙÙکش٠استع٠ا٠کرÙÛ Ø³Û Ú¯Ø±Ûز کرÛÚº Ú©ÛÙÙÚ©Û ÙÛ Ø¨Ûت سست ÛÛÚºÛ
اÙتباÛ
Avoid using string.hashCode
because it is not guaranteed to be stable across different platforms and versions of Dart.