2017-09-01 1 views
1

J'ai un ensemble de tableaux dans AutoHotkey que je veux afficher en tant que chaînes pour le débogage.Comment imprimer un tableau dans AutoHotkey?

strArray := ["Alice", "Mary", "Bob"] ; 1D array 
strArray2D := [[1,2,3], [4,5,6]]  ; 2D array 

En Java, Javascript, et AutoIt je peux accomplir ceci avec les fonctions intégrées de toString().

strArray.toString();   // JavaScript: "Alice,Mary,Bob" 
Arrays.toString(strArray);  // Java:  "[Alice, Mary, Bob]" 
_ArrayToString($strArray, ", ") ; AutoIt:  "Alice, Mary, Bob" 

les Lexikos développeurs de AHK a déclaré une fonction intégrée pour l'affichage des tableaux will not be added anytime soon, et la plupart des solutions que j'ai trouvé en ligne seem fairly complex.

Comment puis-je imprimer un tableau dans AutoHotkey?

+0

Celui-ci https://autohotkey.com/board/topic/70490-print- array /? p = 492728 du lien que vous avez posté est assez simple et peut imprimer des tableaux avec n'importe quelle profondeur. – Oleg

Répondre

2

Ceci convertit les tableaux 1 et 2 de dimension à Cordes

F2:: MsgBox % join(["Alice", "Mary", "Bob"]) 
F3:: MsgBox % join2D([[1,2,3], [4,5,6]]) 


join(strArray) 
{ 
    s := "" 
    for i,v in strArray 
    s .= ", " . v 
    return substr(s, 3) 
} 

join2D(strArray2D) 
{ 
    s := "" 
    for i,array in strArray2D 
    s .= ", [" . join(array) . "]" 
    return substr(s, 3) 
} 

enter image description here

+0

Pourquoi la fonction retourne-t-elle une sous-chaîne? –

+0

pour découper un délimiteur principal si présent –