FileMaker Tip 352

Custom functions (deel 2)

 

We weten allemaal dat er in FileMaker standaard honderden functies zitten. Toch is dat soms niet voldoende: het kan gebeuren dat we iets speciaals willen bereiken en dat een functie daarvoor niet bestaat. Denk maar eens aan een calculatie die in een lus (loop) draait en die dus een bepaald aantal keren na mekaar uitgevoerd wordt. Als we dat niet in een script willen doen (bijvoorbeeld omdat we het resultaat meteen in beeld willen hebben zonder via een knop een script te activeren), dan hebben we een speciale - nog niet bestaande - functie nodig.

Zo'n calculatie die in een lus draait, heeft een bijzonder mooie naam: het is een iteratieve functie. Wanneer een calculatie zichzelf nog eens aanroept op het einde, noemen we dat een recursieve of recurrente functie.

We nemen een voorbeeld dat al uitvoerig op het web werd toegelicht, namelijk de functie RepeatText. Zeg nu niet dat het geen custom-functie is, omdat ze al bestaat. Ze bestond nog niet en daarom is ze speciaal gemaakt - jongens! wat kunnen ze het soms moeilijk maken!

De functie vraagt twee parameters: over welke tekst gaat het en hoeveel keer moet die herhaald worden. Het "herhalingsgetal wordt in de functie bij elke aanroep met 1 verminderd (zowel in de informatica als in de wiskunde drukken we dat uit door x = x - 1 hoe vreemd dat ook moge lijken*).

Stel dat de tekst "poes" is, en dat het gewenste aantal vastgelegd is op 3.

RepeatText ("poes" ; 3 )

De functie is aldus gedefinieerd (en vanaf dan bruikbaar voor iedereen):

text & Case (numberOfRepetitions > 1; RepeatText (texttnumberOfRepetitions - 1))

Het resultaat van de eerste iteratie is:

"poes" & RepeatText ( "poes" ; 2 )

Meteen wordt RepeatText weer aangeroepen (binnen zichzelf) maar deze keer is het aantal te herhalen met één verminderd, dus blijft er slechts de waarde 1 over.

"poes" & "poes" & RepeatText ( "poes" ; 1 )

We moeten nog eens door het hele verhaal, waarna de herhaalwaarde op 0 staat.

Uiteindelijk komen we bij dit resultaat:

"poes" & "poes" & "poes"

Dus bij:

poespoespoes.

Handig als we de kat kwijt zijn en er is nog wat melk over. We doen een beetje ironisch, maar het komt voor (bijvoorbeeld al wanneer we zelf een eenvoudig grafiekje willen tekenen met na elkaar gezette (dus zich herhalende) pipe symbols).

Meer over Custom Functions in de tip van volgende week.


* Te lezen als: x wordt x min 1.

 

Terug naar het selectiemenu voor de tips.