Skip to content

de microScript_cheatsheet

ben0bi edited this page Jan 16, 2024 · 1 revision

microScript cheatsheet

Das ist ein Cheatsheet für microScript 2.0

Variablen

local

f = function()
  local count = 0
  while count < 100
    (...)
  end
end // Die Sichtbarkeit der lokalen Variable ended hier, wenn der Block endet.

Tipp:

  • Benutze lokale Variablen für temporäre Werte in Funktionen.
  • Mixe nicht lokale und globale Variablen mit dem selben Namen.

global

score = 0
level = 1

object

Variablen, die während einem Objektmethoden-Aufruf gesetzt werden, werden Properties des aktuellen Objektes:

player = object
  position_x = 0
  position_y = 0
  setPosition = function(x,y)
    position_x = x // sets player.position_x
    position_y = y // sets player.position_y
  end
end

Das wird oben mit einem Objekt gezeigt, gilt aber auch für Klassen-Instanzen.

Globale Variablen können mit dem Wort global auch aus einem Objekt geändert werden.

player = object
  update = function()
    global.score += 1
  end
end

Typenprüfung

myvar.type

myobject.some_property.type

Properties löschen

delete myobject.some_property
delete this.something
delete some_variable
delete myobject[getPropertyToDelete()]

Werte

myvar.type == 0 myvar ist nicht definiert
myvar.type == "number" myvar ist eine Nummer
myvar.type == "string" myvar ist ein String
myvar.type == "function" myvar ist eine Funktion
myvar.type == "list" myvar ist eine Liste
myvar.type == "object" myvar ist ein Objekt

Nummern

Formatierung

a = 1
b = 1.2
c = -4.5e-5    // = -4.5*10^(-5)

Hexadezimal

h = 0x7FFF

Konversion

Number.parse( string ) Parst einen String und gibt eine Nummer zurück.
num_variable.toString() Gibt die String-Repräsentation einer Nummer zurück.

Operationen

a + b a - b a * b a / b
a ^ b a hoch b
a % b Modulo
a & b Binäres Und
a | b Binäres Oder
a += b a -= b a *= b a /= b
a %= b a &= b a |= b

Strings

delimiters

"double-quote delimited string"
'simple-quote delimited string'
"""triple double-quote delimited string"""

escaping

"\"" double quote
"\n" Zeilenumbruch
"\\" backslash
"double-quote: "" " Ein Paar von double-quotes wird als einzelne double-quote interpretiert

operations

string1 + string2 Hängt zwei Strings zusammen
string.length Länge des Strings
string.substring( i1, i2) Gibt einen Substring des gegebenen Strings zurück, von Index i1 bis Index i2
string.startsWith( s ) Gibt zurück, ob der String exakt mit s startet.
string.endsWith( s ) Gibt zurück, ob der String exakt mit s endet.
string.indexOf( s ) Index des ersten Auftauchens von s in string, oder -1
string.lastIndexOf(s) Index des letzten Auftauchens von s in string, oder -1
string.replace(s1,s2) Gibt einen neuen String zurück, wobei s1 durch s2 ersetzt wird.
string.toUpperCase() Gibt den String in Grossbuchstaben zurück.
string.toLowerCase() Gibt den String in Kleinbuchstaben zurück.
string.split(s) Dividiert den String in eine Liste von Substrings mit der gegebenen Separation.
string.charAt( position ) Gibt den Charakter an der gegebenen Position zurück.
string.charCodeAt( position ) Gibt den UTF-16 character an der gegebenen Position zurück.
string.concat( str2 ) Gibt string + str2 zurück.
string.trim() Gibt den String zurück ohne voranstehende oder hintenanstende Space-Charakter (space, tabs, LF)
string.trimEnd() Gibt den String zurück ohne hintenanstehende Space-Charakter (space, tabs, LF)
string.trimStart() Gibt den String zurück ohne voranstehende Space-Charakter (space, tabs, LF)
String.fromCharCode( code ) Gibt den Charakter mit dem gegebenen Code als String zurück.

Listen

Operationen

list = [] Leere Liste
list.length Grösse der Liste
list.push( element ) Fügt das element am Ende der Liste ein.
list += element Same
list.pop() Löscht das letzte Element aus der Liste und gibt es zurück. (or 0 if empty)
list.insert( element ) Fügt das element am Beginn der Liste ein.
list.insertAt( element, index) Fügt das element am gegebenen index in der Liste ein.
list.indexOf( element ) Gibt die Position des elementes in der Liste zurück, ansonsten -1
list.contains( element ) Gibt 1 zurück, wenn das element in der Liste ist, ansonsten 0
list.removeAt( index ) Löscht das element am index aus der Liste.
list.removeElement( element ) Löscht das element aus der Liste wenn es vorhanden ist.
list1.concat( list2 ) Gibt eine neue Liste zurück, mit liste1 und liste2 addiert.
list1 += list2 Same
list3 = list1 + list2 list3 ist die Zusammenführung von list1 und list2
list.sortList( func ) Sortiert die Liste mit der gegebenen Sortierungsfunktion.

Objekte

Erschaffen

obj = object
  x = 1
  y = 2
end

Properties

obj.x = 2
obj["y"] = obj.x + 3

Object Methoden

obj.incrementX = function() x += 1 end
obj.incrementX()

Funktionen

Definition

add = function( x, y )
  return x+y
end

invocation

five = add( 2, 3 )

Standard Argumente

display = function( text="placeholder text" )
  print(text)
end

display("My text")
display()

implicit returns

square = function(x) x*x end

Schleifen

for Schleife

for i=1 to 10
  print(i)
end

for i=10 to 0 by -1
  print("countdown: "+i)
end


// Iteriere über Elemente einer Liste

list = [1,2,3,4,5]
for element in list
  print(element)
end


// Iterate über die Properties eines Objekts

obj = object
  x = 1
  y = 2
  z = 3
end

for prop in obj
  print(prop + " = " + obj[prop])
end

while Schleife

count = 0
while count < 1000
  print(count)
  count += 1
end

Conditional statements

if x == 1 then
  print("Eins")
elsif x == 2 then
  print("Zwei")
elsif x > 2 then
  print("Mehr")
else
  print("Weniger als Eins")
end

// conditionals are expressions and also return a value

sign_x = if x >= 0 then "positive" else "negative" end

Zufall

// Zufallszahl im Bereich [0 .. 1]
random.next()

// Zufalls-Integer im Bereich [0 .. 99]
random.nextInt(100)

// Setze neuen Zufalls-Seed.
random.seed(1234)

// Klone den Zufallszahlengenerator
r = random.clone()

// Setze neuen Zufalls-Seed für den Klon.
r = random.clone(1234)

// Benutze den Klon als originales Zufalls-Objekt.
r.next()

Schedule

after

after 5 seconds do
  backToMainMenu()
end

every

every 200 milliseconds do
  score += 100
end

do

do     // Der eingeschlossene Code wird in einem neuen Thread ausgeführt.
  for i=1 to 100000000
    doHeavyWork(i)
  end
end

Schlafen / Warten

sleep 1 second

sleep 200 milliseconds

sleep 200 // Wenn nicht spezifiziert sind es Millisekunden.

Threads

after, every and do geben alle einen Thread-Wert zurück:

thread = every 1000 do print(counter += 1) end

thread.pause()

thread.resume()

thread.stop()

Auflistung von sekundären Threads

for t in system.threads
  t.pause()
end

Vordefiniert

Vordefinierte Funktionen

round( x ) sin( x ) sind( x ) sqrt( x ) min( x, y )
floor( x ) cos( x ) cosd( x ) log( x ) max( x, y )
ceil( x ) tan( x ) tand( x ) exp( x )
abs( x ) acos( x ) asind( x ) pow( x, y )
asin( x ) acosd( x )
atan( x ) atand( x )
atan2( y, x ) atan2d( y, x )

Vordefinierte Konstanten

constant value
PI Number Pi
true Predefined to 1
false Predefined to 0

Classes

Definition

MyClass = class extends MyParentClass
  constructor = function( x, y, size )
    super( x, y )
    this.size = size
  end

  getSize = function()
    return size
  end
end

use

my_object = new MyClass( 10, 12, 20 )
print( my_object.getSize() )

Kommentare

// this is a line comment
x = 1 // this is a line end comment

/* This is
  a block
  comment
  */

// Unten ist ein inline-Kommentar
if /*true*/ false then doSomething() end
Clone this wiki locally