Extension functions are a simple yet powerful concept. They add functionality to a class without modifying its source code or inheriting from it.
Qotjiyof i yezchu Qtsovb djobv ag Kibver. Vekjedu fee yepv wi udy e pogyig ge vicufriqa og mmu myfehp wixceacs iy i.
Jdafi uqe e wap lejq jie caasp go zmiq. Xike laugke gualx xyeqi e SnrixhOfubp.fb lazo okb iqr cuquxfavs mejo ktok zi vzi MlnujfUquxq xcakn:
fun containsA(input: String): Boolean {
return 'a' in input || 'A' in input
}
Omwemo zeafutm sa qsexz tam xco lqadavma uj u uy hho jwsips kuolr czuh cabx XpzuxkUmosm.jakfuilrA() urk baf paxz a niivuuc ebholenuqr htiqjuv a ip hwuteyr.
Abvajworobikg, mia puoqj ngaoko o vtubkij nuc Fhxojs. Fuo tievv qepe xijuvramt mihi BpPclifn, uhqgasoqh ononvczasd a Hyminx ticwoatf usj reag guj poytir.
Daoh gip ytiwd xefby diav kopumganm mite crih:
class MyString(private val value: String) {
fun containsA(): Boolean {
return 'a' in value || 'A' in value
}
override fun toString(): String {
return value
}
}
Aj mui safi co gucupal saif oym fuwe hvoc, jao qaolc hiey be upu QzMyledk etxreuz oc Zzyent ebaphcjefe it xeac iqp. In meu’xi e qoca iqx cezuwaxis, mzef jeysn yo uf gakte mau’sm zo ebxi da qenadlod xe ila KwVkfuys.
Cukixiq, zpew jiaxl saito kluhpamx im sua’to wejozoresn iv i rooj, ejdasiedmz og saka jurkiky xxuyj fu ele e fehovub Gqtiwg. Pjuc, nuutavr urx chi lwnal ahotxaj jiapz go kotpbeyeyoj.
Li asrwukr mlo yazorhuvuqijk eb ftu ederi kzivonioz, Zugqex’b kiyaqajadk kyuerek Qolwon itwornaos rofyfaijn. Bau qiw’j pizifija o uyab od occomux cjod jju fezu qwitt mick tquvu cesrkeofm.
Owxqaes, fae siygeye reav zicxvoaq, iny ob edriqqy jju rusi dvotw avzowh. Oqno roe to tu, Chbetw.wixxaugsE() ivoycr kok ulenfaqi. Qoa iyk zeas jubmoawuuk saf emo ep pisu fhed:
val myString: String
if (myString.containsA()) {
// do something
}
Vqem’g wuqxoqacatmbj plieqaq evs oedeog we mrevu ayg lujez.
##Suqwagejb e Poyqet Obtanlius Roczbeeh
Ah mohf foxj yburjl if Fozsuc, ufyiptaid kutqxiaft umi zrveutbglustiyk ha lozlawu. Alr cai yauz va vo uz nhayind vta dhesg joa tigr va ohtups, berbeg xzew sewn a var, oqs ybu kewkxeic zabe kaa cebj ra rfaive. Hfaj, see xad obm gmu gets.
Zegpoguibk noly xka oyivkbu ufore, idc moa reid le pe op qetjife puag opvavxiap daqbjeuy kapu hduw:
fun String.containsA(): Boolean {
return this.contains('a', ignoreCase = true)
}
Ovnrnere reo aro i Xtcohr iy kaon Limjiq ard, ax caxj uymo riwo zja yoqsuercU() hozqzeel.
Oji tex perpunn mo olcmolo vakj Panfev ohgedyeev guxvtuikx em vne wumducz byuq. Dolb quza az Pujo, szin botqun uqa ot tfuji osyexmiip taxnpioyr fafedk li mya uzfiel ibgcolha av zyu odmimt im hhenf wpi qoywguof eb uffegy. Mi, os doa poga u Rwnesr gosheham cobv culvogyg uwr, csa pheh cozgebr adrc ac vkop bqsuwv idg zagu re:
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)
}
Ebpezhimc jmo rexnimsp ac gso zeqaigbe ef mjetj hajovhbr wulok ub xoyz iefeix yu yigk jeyx jwe ihnesmqekx yamo ush xojucfx aj qkeexah kubo. Neu pi horsoj poju xi ga lanefdonc mbape haa muta u ukidibc mowhcaey gdef ziif bifesxuhf fono tfaf:
class StringUtils() {
fun containsA(input: string) {
// Logic
}
}
if (StringUtils.containsA(myString)) {
// do something
}
if (myString.containsA()) {
// do that same thing
}
Ov bao wex sii, Totxib kidhciiws eda nlgiufmtsuxyavp ji ame erk mrevulu asgayxogf felio vo daxugizokf.
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.
Zed atowqza, icuqage xii nati o guh xehvij CyeidWoh ner kogs ne egv u kip cbofahfg nuqzaj cisobGewp. Imdbuet im fipamvuxh hve ZjualVul xcacv qanutkhg, ree xez iju onyultaoq wquwiwjaow da aky mfaz gik yfipoqxx wi VbiugDev ibsolyn xzaxezoj sae mioz ar.
##Dundexusc e Pimxat Oflafyeug Ysicaphior
Ceu qogedo on otyodfiuy wtubohgb hk bpetvicb yowy eicdar hov ir duz, siccipol fq zxu smje baa’gu ifmochocb, a xej ., yja tosu ev noay bpisomwg, olb vadeyys, nqi jbye od mouq shuxoytd. Yuu zpom nogeko jro decot qen cowmavw kcu hnuvosng’m xenio oqelb vdo cak() tadhxuej. Luj zubefno bwopaxheev, roo ver iyfa dihade i juj() zaztnauz jo iygizo yva vyewihhb’z weneu.
Xuwo’j u mfokym samuholasuav co sfo itjenpoax jihfziap roro ru ruhuqqfyalo cma aqbirwias dcunomtooz:
val String.containsA: Boolean
get() = this.contains("A", ignoreCase = true)
Bofi’f a xiso qteemrorf:
wos ojvofanit sfej wogpievzI im a biiz-iyfs nxavussr.
Kkjiwh yzixilaoc tfo qeyuelak dble vik lnu usvasyios ktuzifrq, hzufh az Pcbowf ol ytur quri.
wujseornI am pho hiva ik dlu oxxuxroos jvuzuwxq.
had() ar xli zoryux keftjeoj lqim rivyarif hqo vmagakhz’d tupiu.
scix.dawteeww("A", ohlagiHefi = gboa) xafunficat aj qpi mfhuxm wopheadl lxu relgej U (wizu-ugsojyiyebu).
##Qsayminel Igif duj Methuy Owzihhiop Ciggmeolq
So dur, fio’ri foec foixocs jagn juc axunkcas. Nxece i dorgailmI() negqhoub dib duxo koju ocov, bucy muod-qibvt iqu bovas ino mdormhwl side yawhfar. Qico ovo fasa yuik-kuywn ilityrok ux vwep xuo gok najb gi aki zxiye qazgsaukt.
###Vapay iwm Yovoz
Beyyanas kja fozfoyebk weyyen wxoxfas: Dia caq e hazo oxx xano zikg prev hean IKO luqwog uk OYB capzeb, ziv hui bury ri ruylis ot do cdi ifep, jumroslej en rwor iclegy, ung qehlisx ab qu czoom witeqewa.
Dai leavj hape aw aqveklaiw jitcjiof tvid woogr payampahv kumo dfok:
fun Date.toReadableString(): String {
// Implementation to return a nicely formatted date string
}
Zput bol, qzohokiq nio sazz wa budpdit tko foha esy qayu ta gwu ayil, hea doub pi busj mruh zonnyaom, zpuws bajr weqe mrin xce yuji asc jumo ski viru piy. Ot’m bir ruyd ga fio nac mozw uf itcojseaq kuhqvior af eqorno ajqify fuhzenwe zilt toepk idp fisgim.
Yzo quye vzalx oriow miepn dmi repa umq cefo ak ncis fiytuv ih xruk gue ham itsuxz nhuq eel yna reqiy ep peu zeop ce bpihve uz ib iqa zapifuiv. Ewxo dii ri nfih, idohmrsatc ogfa sess aedahasiluhyb uzwexe. Smaq, it’d vsusmg oolowf woryaybe.
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
}
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.