الاثنين، 30 نوفمبر 2020

What is symbol in Dart Language? ما هو الرمز في لغة دارت؟

 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







التسميات: