Translation is not possible.

#mobile_programming

#flutter

فيه معلومتين حابب أتكلم فيهم معظم الناس مش بتهتم بيهم هما ال

Immutability in strings and string pool in dart

خليني في البداية أقولك إيه ال string pool

String pooling is an optimization technique where the run time keeps a pool of strings.

يعني لما بتيجي تعمل string جديد

The runtime first checks the pool to see if an identical string already exits

يعني لو أنا مثلا عملت كده

string a="hello" ;

string b="hello" ;

في الحالة دي هو مش بيروح يعمل string جديد لا هو بيروح يشوف هل فيه string بنفس الحروف دي لو آه خلاص بيروح يشاور علي نفس اللوكيشن

وبالتالي لو عملت print(identical(a, b))

هتلاقي ال output true عشان آلأتنين بيشاورو علي نفس الاوبجيكت.

========================

تآني حاجة خلينا نعرف يعني إيه strings are immutable

و ده معناه إن مجرد ما ال string حصله create مقدرش أغير ال content بتاعه طب إزاي الكلام ده يعني أنا مقدرش أقول

String s="a"

بعدين ارجع أقول

s=" amir"

لا ينفع بس في الحقيقة إنت مش بتغير ال content بتاع نفس ال object الل بيحصل إنك بتروح تعمل object جديد و بتخلى يشاور عليه

و حتى الناس الل عارفة مش بتاخد بالها إنك ممكن في case معينة ده يأثر علي ال performance بتاعك

علي سبيل المثال لو عندك تعديلات كتير علي ال string زي

String result = "'';

for (var i = 0; i < 10000; i++) {

result += 'a';

}

إنت متخيل إنك في كل مرة بتروح تعمل string جديد و ده بيأثر علي ال performance بتاعك سواء time او memory

عشان كده في الحالة دي ممكن نلجا لل string buffer وده بيبقي mutable عآدى يعني أقدر اغير فيه علي نفس الاوبجت ولما أخلص أروح أعمل toString و ساعتها بس هيcreate new string

علي سبيل المثال

var buffer = StringBuffer();

for (var i = 0; i < 10000; i++) {

buffer.write('a');

}

String finalResult = buffer.toString();

باختصار لو عندك عدد كبير من التعديلات استخدم stringBuffer غير كده استعمل string عآدى

Send as a message
Share on my page
Share in the group