Archiv verlassen und diese Seite im Standarddesign anzeigen : [RMXP] > [RUBY] Variableninhalt als Variablennamen?
Lil_Lucy
12.01.2006, 11:59
Hi,
ich habe folgendes Problem: Ich möchte gerne im Ruby einer Variable/Konstante/ect. den Wert einer anderen Variable/Konstante/ect. zuweisen, also etwa so:
$aktchara_hp = $hp_chara1
nur will ich den Namen des zweiten Postens nicht direkt eingeben sondern aus einer dritten Variable beziehen, etwa $aktchara_name!
Wie muß ich das schreiben damit Ruby versteht was ich will? Ich hab' von Ruby noch nicht soviel Ahnung, war die halbe nacht auf und hab dran gesessen aber in Helpdatei und anderen Scripten nichts Vergleichbares gefunden. hoffe das geht irgendwie...
MagicMagor
12.01.2006, 13:46
Das sollte mit dem eval-Befehl gehen.
$variable1 = 5
$variable2 = '$variable1'
$variable3 = eval($variable2)
p($variable3) # Sollte 5 ergeben
Eval nimmt einen String entgegen und interpretiert diesen String als Ruby-Code, und gibt entsprechend einen Wert zurück.
Innerhalb von Strings kann man auch noch anders Rubycode einbetten:
$x = 5
$ichBinEinString = "Blablub, dies ist ein Test. #{$x}"
Der String zwischen #{ und } wird hier als Rubycode interpretiert und der Rückgabewert als String genommen. Damit Ruby diese Sonderzeichen ('#{' und '}') so interpretiert, muss der konstante String mit doppelten Hochkommata eingeschlossen werden. Wenn der String nur mit einfachen Hochkommata eingeschlossen wird, nimmt Ruby diese Ersetzung nicht vor.
Das ganze geht natürlich auch mit komplexerem Code:
$x = TRUE
$foo = "Das Ergebniss des Trinär-Operators ist: #{$x ? 5 : 10}"
Bei größeren mehrzeiligem Code sollte man allerdings zu eval greifen.
hat Ruby eigentlich native Pointer ? Fuer mich klingt das, was Lil_Lucy da moechte naemlich exakt danach.
MagicMagor
12.01.2006, 14:45
Bis auf Integer/Floats und so Kleinkram, sind alle Variablen in Ruby eigentlich Pointer, sprich es wird immer nur die Referenz auf ein Objekt übergeben (in Ruby ist ja alles ein Objekt).
In sofern ja, solange sie auf ein komplexeres Objekt zugreifen will und nicht auf einen Integer, kann man auch einfach die Variablen als native Pointer benutzen, aber das sorgt mMn zu schnell für Konfusion.
Lil_Lucy
12.01.2006, 20:28
@MagicMagor: Danke, werd's nacher gleich mal ausprobieren!
Mal noch 'ne kleine Frage: Weißt du ob es ein Buch oder so über Ruby in Printform zu kaufen gibt? Ich werd vorraussichtlich im Februar viel Zeit zu lesen kriegen da ich zu so 'ner komischen Schulung muß und meinen PC nicht mitnehmen kann und das wäre die ideale Gelegenheit meinen inneren Schweinehund auszutricksen der mich von sonstigen Lernaktivitäten bisher erfolgreich abgehalten hat...
Achso: Wenn du noch Zeit hast wäre ich dir auch dankbar wenn du mir erklären könntest wie ich es schaffe das der Bildschirm festgestellt wird (wie die Fix-Screen-Option im Pan-Screen-Befehl beim 2k eben). Das hatte ich neulich schonmal wen gefragt, aber seine Methode hat nicht funktioniert...
MfG
Lil_Lucy
MagicMagor
12.01.2006, 22:54
Mal noch 'ne kleine Frage: Weißt du ob es ein Buch oder so über Ruby in Printform zu kaufen gibt? Ich werd vorraussichtlich im Februar viel Zeit zu lesen kriegen da ich zu so 'ner komischen Schulung muß und meinen PC nicht mitnehmen kann und das wäre die ideale Gelegenheit meinen inneren Schweinehund auszutricksen der mich von sonstigen Lernaktivitäten bisher erfolgreich abgehalten hat...
Es gibt die neuste Auflage des Buchs "Programming Ruby" wohl. Meiner Meinung nach so ziemlich DAS Buch, wenn es darum geht Ruby zu lernen, aber ich kenne ehrlich gesagt auch sonst kein anderes =). Gut ist es wohl trotzdem (nicht umsonst empfehl ich jedem die OnlineVersion zum lernen)
Klick mich! (http://pragmaticprogrammer.com/titles/ruby/index.html)
Mit der ISBN kannst du das in jedem Buchladen bestellen, ob es davon auch eine deutsche Printversion gibt weiß ich nicht.
Achso: Wenn du noch Zeit hast wäre ich dir auch dankbar wenn du mir erklären könntest wie ich es schaffe das der Bildschirm festgestellt wird (wie die Fix-Screen-Option im Pan-Screen-Befehl beim 2k eben). Das hatte ich neulich schonmal wen gefragt, aber seine Methode hat nicht funktioniert...
Vermutlich wird es ne Eigenschaft von Game_Screen geben, die das Scrollen verhindert, aber da ich mich recht wenig mit den Standardklassen beschäftige kann ich dir auch nichts genaueres sagen. Und da ich immer noch auf meinen Key warte, kann ich auch leider nicht selber nachgucken. Vermutlich musst du selber im Code suchen, oder jemand anderes wird die Frage beantworten..
Lil_Lucy
13.01.2006, 19:10
Hab' das Buch grade auf Deutsch bei Amazon gefunden! Hui, 29,95€ sind nicht ganz wenig, aber naja, hoffe mal das lohnt sich...!
EDIT: Es scheint da ja noch einige andere Bücher zum Thema, teils mit ähnlichem bis gleichem Titel. Hät' ich nicht gedacht das es soviel gibt...
das liegt vielleicht dadran, dass Ruby eine echte Script/Programmiersprache ist, die es schon vor dem RMXP gab. Das sind also alles einfuehrungen in Ruby und werden sich garantiert NICHT auf den rmXP beziehen ...
Lil_Lucy
14.01.2006, 14:44
Das ist schon klar, nur wurde auch schon oft gesagt das Ruby auserhalb japans nicht sehr bekannt ist! Das es nicht um den XP oder RGSS geht ist logisch.
wollte nur etwaigen Entteuschungen vorbeugen ^^
Lil_Lucy
14.01.2006, 16:21
Hab das Buch jetzt bestellt! Sollte ich es tatsächlich schaffen es komplett durchzulesen werd' ich euch wissen lassen ob sich's gelohnt hat oder nicht!
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.