Avatar billede jgivoni Nybegynder
11. november 2002 - 22:02 Der er 8 kommentarer og
1 løsning

Kald funktion i streng?

Er det muligt at kalde en funktion direkte fra en streng, så returværdi fra funktionen bliver udskrevet, eller evt. så funktionen udskriver en (sub)streng?

Eks.:
function abc()
  {
  return 'halløjsa' / eller print("halløjsa")
  }

print("Funktionen svarer: $abc()");

jeg ved at $-tegnet bruges ved variable, men findes der noget tilsvarende for funktioner?
(Det er selvfølgelig meningen at funktionen skal returnere forskellige strenge alt efter omstændighederne... ellers var det jo uinteressant.)
Avatar billede gizmo-gizmo Nybegynder
11. november 2002 - 22:09 #1
du skal gøre sådan i stedet:

print "funtionen svarer: " . abc() . " blabla";
Avatar billede jgivoni Nybegynder
11. november 2002 - 22:12 #2
Er der ikke nogen 'inline' muligheder?
Avatar billede madd Nybegynder
11. november 2002 - 22:19 #3
nah, men du kan jo lave en

$var = abc();
print "Funktionen svarer: ".$var;
Avatar billede madd Nybegynder
11. november 2002 - 22:19 #4
jeg er ikke lige med på hvad du mener med "inline"
Avatar billede jgivoni Nybegynder
11. november 2002 - 22:29 #5
Ja, det kunne jeg, men så er den jo ikke dynamisk - variablens værdi er fastsat på forhånd, og det kan jeg ikke bruge.

Med 'inline' mener jeg inde i selv strengen, uden at springe ud af den og bruge punktummer.

Det lader til at svaret på mit spørgsmål er 'nej'...
Det er jo også et slags svar, selvom det ikke er til megen hjælp :-)

Nu går jeg i seng. Hvis ikke nogen kender en løsning inden samme tid i morgen, giver jeg point til gizmo, ok?
Avatar billede jgivoni Nybegynder
11. november 2002 - 22:32 #6
PS: Man skulle bare tro at sådan et smart sprog som PHP gav mulighed for den slags også.
Avatar billede jakoba Nybegynder
11. november 2002 - 23:03 #7
netop funktioner kan ikke indlejres i en streng.
men hvis du absolut VIL kode oversmart og uforståeligt så kan du jo prøve denne:

function abc() {
  global $olsen;
  $olsen = 'Halløjsa';
  return "olsen";
}

print("Funktionen svarer: ${abc()}");

den gør faktisk det du beder om i en indlejret streng. Personligt vil jeg klart foretrække .-notationen :-))

mvh JakobA
Avatar billede verndroid Nybegynder
12. november 2002 - 12:44 #8
Øhmm.. Jeg misser nok et eller andet .. men hvorfor kan du ikke bruge noget som

printf("Funktionen svarer: %s.", abc());

istedet for:

print("Funktionen svarer: $abc()");

En mulighed er vel også:

printf("Funktionen svarer: " + abc() + ".");
Avatar billede jgivoni Nybegynder
12. november 2002 - 16:47 #9
JakobA:
Dit eksempel virkede ikke umiddelbart, men det lykkedes mig at lave få ændringer til dette, som gør det forventede:

function abc() {
  global $olsen;
  $olsen = 'Halløjsa';
  return "olsen";
}

$abc="abc";
print("Funktionen svarer: ${$abc()}");

...men nej, det er bestemt ikke for kønt :-)
Nu er det jo rent faktisk ikke fordi jeg ynder at kode 'oversmart og uforståeligt' (citat slut) men personligt synes jeg koden bliver meget mere læselig, når man kan indlejre variable i strenge - det var én af grundende til jeg i sin tid skiftede fra asp til php. At man så ikke kan gøre det helt så enkelt med funktioner er jo bare ærgeligt.
Men du har givet mig en løsning, som du får mine points for.

Verndroid:
Jeg kan ikke så godt bruge printf, da det også skal virke med "echo", som man kan bruge til at printe mange liniers html.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester