Kawakuwa tumesha jifunza mengi kuhusu function na parameter sasa hapa nakwend akukuletea aina za function ambazo zipo:

 

Aina za function

  1. Function ambazo hazina parameter wala return

Mfano:

void salamu(){

 print('habari ya muda huu ');

}

 

void main(){

 salamu();

}

 

  1. Function zenye parameter ila hazina return

Mfano:

void jumlisha(x, y){

 print(x +y);

}

void main(){

 jumlisha(4, 9);

}

 

  1. Function zenye return ila hazima parameter

jumlisha(){

 int x = 4; int y = 6;

 return x + y;

}

void main(){

 print(jumlisha());

}

 

  1. Function ambazo zina parameter na return

eneo(int ur, int up) {

 return ur * up;

}

 void main(){

   print(eneo(6, 8));

}

 

 

Function ambayo haina jina

Tulishaona kuwa function inatakiwa iwe na jina. Sasa kuna function ambayo yenyewe jina ila inaweza kubeba parameter. Function hii inatambulika kama anonymous function  au lambda function au closure function au nameless function. Yenyewe inaweza kuwa katika mtindo huu:-

(parameter){

Code

}

 

Mfano:

void main() {

var jumlisha = (int x, int y){

 return x +y;

};

 

print(jumlisha(4, 6));

}

 

Ukiangalia hapo utaona kuwa function yetu haina jina, lakini tumeweza kuitumia.


 

Lambda function 

Huu ni mfuo wa kuandika functio  kwa ufupi kw akutumia arrow yaani mshale ( => ) function hii huitwa arrow function wacha tuone mfano hapo chini. Tunakwenda kutengeneza program kwa ajili ya kubadili mita kuwa kilopita. 

 

Kanuni za kihesabu zinasema kilomita moja ni sawa na mita 1000. Hiyo ili tubadili mita kuwa kilomita itatubidi tugawanye kwa 1000.

 

import 'dart:io';

badili(mita){

 return mita /1000;

}

void main(){

 print('andika Mita');

 double mita = double.parse(stdin.readLineSync()!);

 print(badili(mita));

}

 

Sasa tunakwenda kuibadili function yetu kuwa katika mtindo wa lambda function.

Kanuni

returnType functionName(parameters...) => expression;

Ukiangalia hapo yale mabano {} tumeyatoa.

import 'dart:io';

badili(mita)=>

 mita /1000;

 

void main(){

 print('andika Mita');

 double mita = double.parse(stdin.readLineSync()!);

 print(badili(mita));

}

 

Nadharia ya scope kwenye Dart:

Tunapozungumzia scope tunamaanisha ni wapi value flani inaweza kutumiwa. Kwa mfano variable. Kwenye Dart ukitengeneza variable haiwezi kufanya kazi nje ya mabano {}. Kwa kuwa Dart inatumia mfumo wa lexical scope ambao unaangalia matumizi ya {}. Angalia mfano huu ambao tulishauona masomo yalopita

import 'dart:io';

void bongo(idadi){

 int idadi = int.parse(stdin.readLineSync()!);

 for(int x = 0; x<idadi; x++){

   print('Bongoclass');

 }

}

void main(){

 print('ANDIKA IDADI');

 bongo(idadi);

}

 

Katika mfano huo varuable idadi  int idadi = int.parse(stdin.readLineSync()!);

Hatuwezi kuitumia nje ya hiyo function bongo kwa akuwa itakuwa imetoka kwenye mabano {}  hapa scope  hii huitwa local. Ili tuweze kuifanya ipatikane kote tunatakiw atuofanye global hivyo tutatakiw akuiweka juu kabisa ya program yetu

import 'dart:io';

int idadi = int.parse(stdin.readLineSync()!);

void bongo(idadi){

 for(int x = 0; x<idadi; x++){

   print('Bongoclass');

 }

}

void main(){

 print('ANDIKA IDADI');

 bongo(idadi);

}

Hapo ilipo sasa itaweza kutumika mahali popote kwenye hilo faili.

 

Recursive Dart Functions

Hii ni aina nyingine ya function ambapo function itajiita yenyewe kwa kujirudia rudia  mpaka matokeo yatakapopatikana. Chukulia mfano unataka kutafuta factorial numba. Hili ni zao la namba ukizidisha na namba zote ambazo ndogo kuliko nmaba hiyo mpaka kufikia moja. Mfano tunaposema factorial number ya 5 ni sawa na kusema 5*4*3*2*1 mbapo ukizidisha hapo utapata 120. Au factorial namba ya 3 ni 3*2*1 ambapo ni sawa na 6.

Sasa kama tutataka kutengeneza functon kwa ajili ya kutafuta factorial number itabidi functon hii ijiite yenyewe mpaka pale jibu litakapopatikana.

void main() {

 print(factorial(5));

}

factorial(number) {

 if (number <= 0) {

   return 1;

 } else {

   return (number * factorial(number - 1));

 }

}

Ikiangalia hapo utaona ndani ya function jina la function limetumika kuiita function number * factorial(number - 1)

Main function

Hii ni function kuu ambayo inatumika kama entrypoint ya program. Yaani pale ambapo program itaanzia kazi yake. Mfano main(){}

 

void main(){

 print('haloo');

}

 

Mwisho:

Katika somo linalofuata tutakwend akujifunz akuhusu parameter zinavyoweza kutumika kwenye function.