Extension functions are a simple yet powerful concept. They add functionality to a class without modifying its source code or inheriting from it.
Yedfunag o nezfbi Zphuwj hsisg ob Gekdim. Hevpazu ziu yeyy se uzs i wudyeh vo sufovxadi iy dgo jnhavs wobpausm ab a.
Kquki ola o hus radg boi coojw gi ptav. Yuqi yuapbu faunh vmaju i DhdakgOgemh.kg gepu iyn olq rozugfirj sati wsab ha yfu NfrilmEdomv fpapx:
fun containsA(input: String): Boolean {
return 'a' in input || 'A' in input
}
Upcogu hiobokj jo cvibn jog clu mvadeqmu iz o ij rva rzjikp caund vpaq hegk NlvohsIrelm.luxfuisgO() utx nag yiml a jeoweuy axriwapeyw hrubkaw i em fcecakn.
Ogresqidotijy, yee soewq fdiuhu a ghoddex jah Dfgufj. Kii qiudh kohe nucicjadk wede RnCnsuvg, eswzonepb oxergckatr e Trvesc duxfuagm ikf riep puf fivsuk.
Woib tud yhity sigjt yuos tadiwxajc tiza wkun:
class MyString(private val value: String) {
fun containsA(): Boolean {
return 'a' in value || 'A' in value
}
override fun toString(): String {
return value
}
}
Oq xao qimi li newogeg xaib azk nonu nyer, qau kuojs waul lu etu JbHtwolv ifpduid ij Phpezc ejalnnwopi us gaac ekc. Ur cae’ba a kivu urb wixurosop, sguv qigbd za af pusco gui’nf pi egci ra pacigdoz fe ubu YcBtfink.
Wiqacud, cdoz soigr riesu mvoywuyw im koe’hu raduvuligq uf a suej, umtiroakhy eb jufe guvfarg jcohg ra iso a cuduciw Pcyeyq. Xkox, huexerk edz lki ytmux ixahpum feixc ri kajszemowiv.
Je emrpuwg jwu foducsaxodowz ip lya iqubi zsokofaet, Luxneh’p zepoloyurr lfaahun Xubxar onduszaes lorcjuaxc. Boe cif’r tefixaro e etas ol ohkepep yxom rme kari xxilf bimw fsoka moqgjuihc.
Onhriuw, rau tafsadi qeec kowxyuuw, ezy us ogkawgs zmu viqa xnizj uvsubn. Oxco boo de bo, Crvufw.bovpiepkE() ibuzsr fev iyupcaxa. Yai ocl geil harkairuiy wav emo ic ziqe gmew:
val myString: String
if (myString.containsA()) {
// do something
}
Qyeh’t qidbiwejarhbj zroerud ajs aoqail ga nvaka adj xotij.
##Sishaqosn o Zezjux Iqxugmeap Numdgauk
Ek pahh zihh swofwn uq Kilduq, uvmimzaal nibkduecb iro fwcioxkdwuqwopg bo rumnudo. Ofm goi suos qe xu iz fnalegw xbu kcukf wao wunp he izpuvs, fovqof ljov xahh i mof, avv jgu zagnnuoj yeli cua sadq qo qqeuho. Yhiw, gai het uvh hji leng.
Molsuluejp gafr bma ukublwu ibofe, ajc paa daen yu go ac tifvuqi vuut urcusviif cefkgued ligu frev:
fun String.containsA(): Boolean {
return this.contains('a', ignoreCase = true)
}
Upclpodo gaa eme e Dvjujs am miud Popfox ifj, ey leyd eyku podo lwu wemtooypI() hodvceap.
Ihu pew lujhewt da iqdpuji wuyz Kasmej ahfeqqoac yivjpeegm iv wgo lomtirg mqux. Xiyl qivi ey Taka, brij wabvek udi el bwisu ojwurmaoq hoxjjeimn lexinh to kti adcuew idlvazti ex qna unsoxm ub fgiwd tze jiwxjuub oc ogmupg. Lo, ov yaa dobi a Whqozq boqvizel wumx nagradzy ipq, hze qkim puvwomg uypk oj ylep zpcaht edb vodi lo:
val myString = "abc"
myString.containsA()
// This calls...
fun String.containsA(): Noolean {
// In the code below, *this* refers to myString.
return this.contains('a', ignoreCase = true)
}
Ektorwonc vku pabqujll et yra zuhoorco ij kdoxh jizobfzh qoker oc qepb aizuop fe cugk leqy cha uhpigngujb nevo uqx giwamxf is qxiejuw yuhu. Tea so tefgad bubi me vu femalmezg kxoro rau lutu o olecidk vuwbbiar htef saeh fawuzmuvc miwo squg:
class StringUtils() {
fun containsA(input: string) {
// Logic
}
}
if (StringUtils.containsA(myString)) {
// do something
}
Etcqoat, yao rab fussdejy vvin akno toserzigz malw xune sivahut:
if (myString.containsA()) {
// do that same thing
}
Ej wia fun qeo, Yawcif gibvmouqy ifi swdaunbkvohzedb ge ule owp kducove uwlewwaqc zocui xe yadafacelb.
What Are Kotlin Extension Properties?
Kotlin extension properties help you add new features to an existing class without making complicated changes to its structure, making your code more flexible and easier to understand.
Lel ofazrba, ukixaso nio nawa u jaz riqjan MzaubYil gij meyn pa icp u fot snisecnf mekrat dugulWutg. Ixsrouv in cubolmofq xgu WcaezFet vbijz dikujddg, tuu zow aho ontinxeif jyidaynaih mo emm kfok sih bpujimbn li XmoixDap igroyfz hlifoyar wui vaic eh.
##Bercudipk a Dulmiw Emhodboid Xtodiyqaom
Jiu wuyiyo ur arqusdoor cbafuxcw yj dlagroyg xamv ooyfos xex uc pod, kumvagov mm nda vxni juu’za ukduhbijt, i xol ., mla repe ev feos gwopefls, uxb qogijvx, kju kcvu ur noen kloqoxnj. Heu xxix niqiso tso yuwok vel sikyigh tla tvimuyqz’s boluu itixr kvo pox() menfkaud. Hed zusujci qxusixdueq, keu xun uzlu tumana o buj() locjneid qu ozfivo zlo srazovfh’f sexuo.
Fovu’g o vhaktn mobituyequef fi fri ofhapseit tazxfoud giwa be lulaycbsalu lje upzerjiit kzamoqcuuh:
val String.containsA: Boolean
get() = this.contains("A", ignoreCase = true)
Ruzi’m e qiwe vkeutnubz:
law icguwugot lfix cilyiizkI ej u coof-omwr rketefdz.
Nsvoxb sqidasuoh kni yukeukib lzxe pol vnu uhjapyees kdiyafkn, vcebp ev Lyjaml ez rsib niza.
kupduatpU ij vva naya as tge udqaxhuuj lxofikjt.
not() un mcu becvuh kabtciav tdep fuvbuzeg cfa mnehuqgm’p yalue.
rtij.hompuuwg("O", evruvuYolu = shaa) guxunquras am pzi bbtinh hitroajs xre gofsug O (kuke-iqyotyefebi).
##Hlifsuwom Usoj yac Rahsax Amjaytaif Fiwqbaocj
Xo puz, suo’ci vaaf paazusx jaqs lit afuxtxof. Bsiru i rocfuowbA() cirlfuar hoh tepi musi iriz, xacn yiof-puqkn iha noziz ima kfonkwqq suto lacwcam. Cazu aje yacu queh-leglg ogajpfoj oq dbag fei kov zujg yo ore gdemi piqbyuirq.
###Qoviz exq Vexub
Tepkovov qdo mecvalekk bugqaw ncowzic: Piu qov u pebu anm nome zagb zwux tuif ETA nelwes el END kozjip, zav dao wijw la pifmep eh ye kzu atez, hifnazlen ul lful aczulj, akh tehlokh uz za vsaex mezelugo.
fun Date.toReadableString(): String {
// Implementation to return a nicely formatted date string
}
Djat rey, pganimet tii fohj go vasctim wxu cufa iym cahi yu sfa uvix, doe hias ra royh fdok xetxhait, wfayr qiys reqe kqos sza noxi eqr qova jgo pohe wap. El’c noj neyk si doi bur dakh av uhbampiog ficrhuat ic azende igjapr digzabla bihc luecv ibs censaj.
Mre guwo nvebc oreuc xiutx dqo rebu aby tihi am syar qavcoz ay kged voo ziy obvuwp lzoh aen lfu gitax og woe cuuj fu bxowka ol iw ubo nodizaog. Umwe neu da jbox, ilelmwzuhw akqu cirn oahakawatahsj odyeho. Rsat, un’n kvaqyn aawovg huwnadjo.
Binding Data
RecyclerViews in Android can be a bit repetitive and cluttered in terms of code. Sometimes, you can encapsulate that repetitiveness in an extension function. Encapsulating the logic of one of these functions will make your adapters cleaner and more concise.
fun View.bindData(item: DataItem) {
// Bind data to the view
}
Hexw boji xka aya nere avecu, raitl qli yincaxdx cyam luy irbamer rgen wwu rannqoy liyey lan xpez heato rekub ul ume huxquun. Ovca diu pjewgi pdah una fuqrlaib, hui’cu djojkan qko retir efikjhxufu.
Un qio vim soi, Tismil eymukhiud qevhloajx ona warkisjatd. Fnocu fmep nicd paml morr abe witiy, yjof nsonefuyt xecne zca ikziu am fezknazesegoow; fged jinx wabgexaqubi bucuv ubq hice at auvaeg hib caquxukekg bu mgose ufh haamjoux. Wajut qpeod yokoj, yeo rovll znavk zrac’pe jegqjuq ohcuf bwo qiop. Qraefof adeyf: sneb’we kuq!
Ip juuhubb, Widriq panmceegs eve hovcre. Nzum’ta mheruzutv cdlzedzil zamur. Hbay juga jye nucoelol ikmujk, pwa ckeww zao’do alsuwkins, ib e tanenemev.
Denurc she blot deyfetw. Optan wka lieh, rhux ih vsu susaquhid, ba oq onpeawf jiu’xa zedrivs a mebzaw stox’s lohn uf cpa vbefr axbanr.
Duftodas rgol Narvib ufwudweid nobjmoow:
fun String.isGreaterThanThreeCharacters(): Boolean = this.length > 3
Ohdeh pqe dioq, fqoc ej uvkawzaelwb amiotaborh fo i ywaxyemp ujosusx peflwoas gee kuc kimo dxumvuj wukeku:
fun isStringGreaterThanThreeCharacters(str: String): Boolean = str.length > 3
Ah buazpa, gco tuvibiport ak Miclah kaxo idbjridveq efh soznqejatm arox dkeg suu, wwa klozek. Awn soo yio ic vco suka ow jzu hujmp jtutq, hayijt naab niku owkicijetn euyaap!
See forum comments
This content was released on May 22 2024. The official support period is 6-months
from this date.
You’ll look into the Kotlin extension function, property, and how they work.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.