What is symbol in Dart Language? ما هو الرمز في لغة دارت؟
What is symbol in Dart Language? ما هو الرمز في لغة دارت؟
What is symbol in Dart Language? ما هو الرمز في لغة دارت؟
يتم استخدام كائن الرمز symbol object لتحديد عامل تشغيل operator أو معرفidentifier معلن في لغة برمجة دارت Dart. بشكل عام ، لا نحتاج إلى استخدام الرموز أثناء برمجة دارت Dart ، لكنها مفيدة لواجهات برمجة التطبيقات. عادة ما يشير إلى المعرفات حسب الاسم ، لأن أسماء المعرفات يمكن أن تختلف ولكن ليس رموز المعرفات.
Symbol رموز دارت Dart هي اسم سلسلة نصية ديناميكي يُستخدم لاشتقاق البيانات الأولية من المكتبة. إنها تجمع بشكل أساسي الاتصال بين السلاسل النصية التي يمكن للإنسان قراءتها والتي تم تحسينها لاستخدامها بواسطة أجهزة الكمبيوتر.
الرموز لها مصطلح يسمى انعكاس Reflection. إنها تقنية تُستخدم في البيانات الوصفية في وقت التشغيل ، على سبيل المثال - عدد الدوال المستخدمة في الفئة ، أو عدد المشيدات في فئة ، أو عدد الوسيطات في دالة.
تحتوي مكتبة dart: mirrors على جميع الفئات المتعلقة بالتأمل. يمكن استخدامه مع تطبيقات سطر الأوامر وكذلك تطبيقات الويب.
بناء الجملة في الرموز symbols-
Symbol obj = new Symbol("name")
يتم استخدام رمز التجزئة hash (#) ، متبوعًا بالاسم لتعريف الرمز في Dart. وفيما يلي بناء الجملة.
هنا ، يمكن استخدام المعرف الصالح مثل الوظيفة أو الفئة الصالحة أو اسم العضو العام أو اسم المكتبة بدلاً من قيمة الاسم.
#radix
#bar
دعونا نفهم المثال التالي مثال -
library foo_lib;
// libarary name can be a symbol
class Foo {
// class name can be a symbol
m1() {
// method name can be a symbol
print("Inside m1");
}
m2() {
print("Inside m2");
}
m3() {
print("Inside m3");
}
}
في الكود أعلاه ، أعلنا عن فئة Foo في مكتبة foo_lib. يحتوي الفئة على الدوال m1 و m2 و m3. نحفظ الملف أعلاه كملف foo.dart.
الآن ، نقوم بإنشاء ملف جديد FooSymbol.dart وتشغيل الكود التالي.
FoolSystem.dart
import 'dart:core';
import 'dart:mirrors';
import 'Foo.dart';
main() {
Symbol lib = new Symbol("foo_lib");
//library name stored as Symbol
Symbol clsToSearch = new Symbol("Foo");
// class name stored as Symbol
if(checkIf_classAvailableInlibrary(lib, clsToSearch))
// searches Foo class in foo_lib library
print("class found..");
}
bool checkIf_classAvailableInlibrary(Symbol libraryName, Symbol className) {
MirrorSystem mirrorSystem = currentMirrorSystem();
LibraryMirror libMirror = mirrorSystem.findLibrary(libraryName);
if (libMirror != null) {
print("Found Library");
print("checkng...class details..");
print("No of classes found is : ${libMirror.declarations.length}");
libMirror.declarations.forEach((s, d) => print(s));
if (libMirror.declarations.containsKey(className)) return true;
return false;
}
}
</pre></div>
<p>The above code will show the following output.</p>
<p><strong>Output:</strong></p>
<div class="codeblock"><pre>
Found Library
checkng...class details..
No of classes found is : 1
Symbol("Foo") // Displays the class name
class found..
</pre></div>
<p><strong>Example - 2 : Print the number of instance methods of class</strong></p>
<p>In the following example, The Dart provides predefine class <strong>ClassMirror</strong> which helps us to display the number of instance methods of class.</p>
<p><strong>Example -</strong></p>
<div class="codeblock"><textarea name="code" class="java">
import 'dart:core';
import 'dart:mirrors';
import 'Foo.dart';
main() {
Symbol lib = new Symbol("foo_lib");
Symbol clsToSearch = new Symbol("Foo");
reflect_InstanceMethods(lib, clsToSearch);
}
void reflect_InstanceMethods(Symbol libraryName, Symbol className) {
MirrorSystem mirrorSystem = currentMirrorSystem();
LibraryMirror libMirror = mirrorSystem.findLibrary(libraryName);
if (libMirror != null) {
print("Found Library");
print("checkng...class details..");
print("No of classes found is : ${libMirror.declarations.length}");
libMirror.declarations.forEach((s, d) => print(s));
if (libMirror.declarations.containsKey(className)) print("found class");
ClassMirror classMirror = libMirror.declarations[className];
print("No of instance methods found is ${classMirror.instanceMembers.length}");
classMirror.instanceMembers.forEach((s, v) => print(s));
}
}
المخرجات
Found Library
checkng...class details..
No of classes found is : 1
Symbol("Foo")
found class
No of instance methods found is 8
Symbol("==")
Symbol("hashCode")
Symbol("toString")
Symbol("noSuchMethod")
Symbol("runtimeType")
Symbol("m1")
Symbol("m2")
Symbol("m3")
دارت تحويل الرمز symbol إلى سلسلة نصية
يمكننا تحويل رمز symbol دارت إلى سلسلة نصية باستخدام فئة MirrorClass المضمنة ، والتي يتم توفيرها بواسطة حزمة dart: mirror. دعونا نفهم المثال التالي.
مثال -
import 'dart:mirrors';
void main(){
Symbol lib = new Symbol("foo_lib");
String name_of_lib = MirrorSystem.getName(lib);
print(lib);
print(name_of_lib);
}
}
مخرجات الكود
Symbol("foo_lib")
foo_lib
اقرأ أيضا عن لغة البرمجة دارت Dart
التسميات: Dart Programming Language lessons تعلم دروس لغة البرمجة دارت
<< الصفحة الرئيسية