Fitur Extension Methods pada Dart

Dhe997

Extension Methods

Pada versi 2.7 Dart mengenalkan fitur baru yaitu extension methods. Tujuan dari fitur ini adalah supaya kita bisa membuat fungsionalitas tambahan dari library yang sudah ada.

Ketika Anda menggunakan library, baik itu library bawaan Dart atau pun library milik orang lain, ada kemungkinan library tersebut kurang lengkap sehingga kita perlu menambahkan beberapa fungsionalitas. 
Namun akan jadi PR kita untuk mengubah library yang sudah ada. Dengan extension method, kita dapat membuat fungsi atau method tambahan lalu menggunakannya sesuai dengan kebutuhan aplikasi kita.
Contoh sederhananya, kita memiliki variabel list integer.


  1. var unsortedNumbers = [2, 5, 3, 1, 4];



Kita memiliki kebutuhan untuk mengurutkan nilai di dalam list tersebut namun List pada Dart tidak memiliki fungsi untuk mengurutkannya (Dart memiliki fungsi sort() namun bersifat mentransformasi list dan tidak mengembalikan nilai). Kita bisa membuat extension method dari objek List dengan sintaks seperti berikut:
  1. /* extension <extension name> on <type> {
  2.   (<member definition>)*
  3. } */
  4.  
  5. extension Sorting on List<int> {
  6.   List<int> sortAsc() {
  7.     var list = this;
  8.     var length = this.length;
  9.  
  10.  
  11.     for (int i = 0; i < length - 1; i++) {
  12.       int min = i;
  13.       for (int j = i + 1; j < length; j++) {
  14.         if (list[j] < list[min]) {
  15.           min = j;
  16.         }
  17.       }
  18.  
  19.  
  20.       int tmp = list[min];
  21.       list[min] = list[i];
  22.       list[i] = tmp;
  23.     }
  24.  
  25.  
  26.     return list;
  27.   }
  28. }


Pada extension method di atas kita telah membuat method atau fungsi untuk mengurutkan data di dalam list menggunakan selection sort algorithm. Selanjutnya kita bisa memanggil method ini dari objek list.


  1. void main() {

  2.   var unsortedNumbers = [2, 5, 3, 1, 4];

  3.   print(unsortedNumbers);

  4.   var sortedNumbers = unsortedNumbers.sortAsc();

  5.   print(sortedNumbers);

  6.  

  7.  

  8.   /*

  9.   Output: [2, 5, 3, 1, 4]

  10.           [1, 2, 3, 4, 5]

  11.    */

  12. }



Kita juga bisa menggunakan kembali extension method ini di beberapa berkas yang berbeda sebagai library.



  1. import 'extension.dart';

  2.  

  3. void main() {

  4.   var unsortedNumbers = [2, 5, 3, 1, 4];

  5.   print(unsortedNumbers);

  6.   var sortedNumbers = unsortedNumbers.sortAsc();

  7.   print(sortedNumbers);

  8. }






  1. extension Sorting on List<int> {

  2.   List<int> sortAsc() {

  3.     var list = this;

  4.     var length = this.length;

  5.  

  6.     for (int i = 0; i < length - 1; i++) {

  7.       int min = i;

  8.       for (int j = i + 1; j < length; j++) {

  9.         if (list[j] < list[min]) {

  10.           min = j;

  11.         }

  12.       }

  13.  

  14.       int tmp = list[min];

  15.       list[min] = list[i];

  16.       list[i] = tmp;

  17.     }

  18.  

  19.     return list;

  20.   }

  21. }

  22.  

  23. extension NumberParsing on String {

  24.   int parseInt() {

  25.     return int.parse(this);

  26.   }

  27. }





Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.