Kawakuwa tumesha jifunza mengi kuhusu function na parameter sasa hapa nakwend akukuletea aina za function ambazo zipo:
Aina za function
- Function ambazo hazina parameter wala return
Mfano:
void salamu(){
print('habari ya muda huu ');
}
void main(){
salamu();
}
- Function zenye parameter ila hazina return
Mfano:
void jumlisha(x, y){
print(x +y);
}
void main(){
jumlisha(4, 9);
}
- Function zenye return ila hazima parameter
jumlisha(){
int x = 4; int y = 6;
return x + y;
}
void main(){
print(jumlisha());
}
- 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.