8
votes

Comment convertir une chaîne en une liste dans IO?

Par exemple, je voudrais activer "bonjour" dans la liste (104, 101, 108, 108, 111) ou liste ("h "," E "," L "," L "," O ")

Jusqu'à présent, j'ai créé une liste vide, utilisée foreach et annexé chaque élément dans la liste moi-même, mais ce n'est pas vraiment une façon concise de le faire.


6 commentaires

Vous VRAIMENT Je ne veux pas savoir ce que vous devez utiliser pour convertir une chaîne en une liste dans la chaîne de ski. ;-)


lol .. si je crée un langage de programmation assez sérieux, je promets de nommer l'hel :)


Off thème mais pertinent pour les questions IO ici. J'ai annulé vos éditions que vous avez récemment fait parce que iolanguage est la balise canonique pour io.


BTW, bonne question! Je me suis gratté ma tête pendant un moment. Je pense qu'un aslist serait un bon ajout à la séquence principale objet .


Malheureusement, "Hello" Split et "World" Split ("") Les deux ne fonctionnent pas comme prévu.


Aux électeurs du Down de mes deux réponses: la question visait à essayer de donner une réponse concise sans utiliser de liste / foreach vide :( pour la performance utilisant la liste vide / foreach est clairement optimale :)


4 Réponses :


2
votes

Une manière d'utiliser Regex Addon:

Sequence asList := method (
    Regex
    self allMatchesOfRegex(".") map (at(0))
)

# now its just
myList := "hello" asList


8 commentaires

C'est une solution créative, mais pas vraiment mieux non :)


C'est mieux que foreach car aucun kittens ^ h ^ h ^ h ^ h ^ h ^ h ^ h de variables ont été blessés ou tués dans sa construction :)


Pas beaucoup d'IO-POLKS suspendus sur Stackoverflow apparemment (ou n'importe où à ce sujet). +1 pour l'enthousiasme :)


Ceci est au-delà de vieux. Cependant, je ne trouve aucune réponse dans la manière d'inclure un complément. Comment puis-je ajouter exactement le module REGEX.


@Rig - Add-on regex est livré avec io. Il y a eu des problèmes dans le passé l'obtenir pour compiler mais je pensais que c'était corrigé (bien que je n'ai pas essayé pendant un moment!).


Oui, je ne suis pas sûr. Je n'ai pas été capable de comprendre comment l'obtenir disponible pour une utilisation. Tout ce que j'ai vraiment, c'est leur site et le livre 7 langues comme guide. Peut-être qu'il y a une sorte de déclaration d'importation que je n'ai pas vraiment vue énumérées?


@Rig - regex importe l'add-on (c.-à-d. Ajoute les méthodes nécessaires à l'objet de séquence). Essayez-le dans Rem Reply et vous devriez voir quelque chose comme ça - Github.com/stevedekorte/ io / Problèmes / 210 # Issuecomment-20550324 NB. Si vous obtenez une erreur tout en utilisant une méthode de regex, vérifiez le fil complet dans ce lien.


J'allais juste demander où trouvons-nous la liste des addons à jour mais Hélas vient de regarder Github! Merci ya'll.



5
votes

Ma propre suggestion:

Sequence asList := method(
  result := list()
  self foreach(x,
    result append(x)
  )
)


4 commentaires

Oui foreach sera beaucoup plus performant. Cependant, il est moins concis. Espérons qu'une solution performante concise est là-bas?


Quelque chose de similaire à cette approche est utilisé dans l'un des tests (voir ByTelist): github.com/stevedekorte/io/blob/master/libs/iovm/tests/...


Un peu de vitesse: résultat: = Liste () PreAllocaTosize (taille de soi)


Pour moi, cela ne s'exécute pas, je l'ai changé en Séquence Aslist: = Méthode (résultat: = Liste; auto-poule (x, résultat append (x))) . La différence n'est pas énorme mais pour quelqu'un comme moi qui n'est pas familier aux messages d'erreur de la syntaxe IO et d'exécution, il était très difficile de trouver pourquoi il échoue ...



4
votes

Un autre joliment concis mais toujours malheureusement plus lent que la solution foreach est: xxx


0 commentaires

2
votes

J'ai Langue de programmation io, c. 20110905 aslist est défini par défaut, vous pouvez donc l'utiliser sans de nouvelles définitions . Ensuite, vous pouvez obtenir des codes de caractères avec mapper méthode. XXX


0 commentaires