www.mikrocontroller.net

Forum: PC-Programmierung Lua; Argumente "zusammenlegen"


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: S. Kript (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Vielleicht finden sich ja hier auch ein paar Lua cracks...


Nehmen wir mal diese Trivialbeispiel:

b() liefert 3 Werte zurück, a() braucht aber 4.
function a (q,w,e,r)
  print(q,w,e,r)
end

function b()
  return 1,2,3
end

Wie kann man jetzt hier
  a( b() )

noch ein Argument anhängen?

Das geht nicht:
  a( b(),4 )


So herum schon, aber das hilft mir nicht weiter:
  a( 4, b() )


Die explizite Lösung scheidet aus (viel zu viel Tipperei
bei langen Namen und vielen Argumenten):
  a( {b()}[1], {b()}[2], {b()}[3], 4 )


Hat jemand ne pfiffige Idee?


P.S.:
a() ist eine Bibliotheksfunktion und kann
leider nicht geändert werden...

Autor: Dennis Heynlein (c-logic)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Vorher die Argumente in eine Temp-var einlesen ?
x,y,z=b()
a(x,y,z,4)

Autor: S. Kript (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ja klar, das geht natürlich auch ;)

Mir gings aber eher um die (notwendige) Notation
das innerhalb des Funktionsaufrufs zu bewerkstelligen.

Hab ne Menge rumprobiert und gelesen, aber das
scheint tatsächlich nicht möglich zu sein...

Autor: Dennis Heynlein (c-logic)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Nur so als Gedanke :)

function b()
  return 1,2,3
end

function a(u,v,w,x)
  print("A=",u,v,w,x)
end

function intercall(a,b,c)
  local x,y,z
  x,y,z=a()
  b(x,y,z,c)
end

intercall(b,a,4)  -- rufe 'b' auf und gib es an 'a' inkl. Argument 4

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net