35 votes

Alternative à Scala REPL breakIf dans la version 2.10

Je lisais aquí sur l'utilisation du breakIf dans le code REPL pour un débogage interactif, mais j'ai ensuite découvert que ce poste disant que break y breakIf ont été retirés de ILoop dans Scala 2.10. Malheureusement, cet article n'explique pas pourquoi le code a été supprimé.

Je suppose que ces fonctions ont été supprimées parce qu'il existe une meilleure façon de procéder. Si c'est le cas, quelqu'un pourrait-il m'éclairer ?

6voto

Steve Points 1607

Peut-être que l'idée est que vous devriez juste travailler avec la ILoop directement ? Pour autant que je sache, ça ne devrait pas être beaucoup plus complexe que :

// insert the code below wherever you want a REPL
val repl = new ILoop
repl.settings = new Settings
repl.in = SimpleReader()
repl.createInterpreter()

// bind any local variables that you want to have access to
repl.intp.bind("i", "Int", i)
repl.intp.bind("e", "Exception", e)

// start the interpreter and then close it after you :quit
repl.loop()
repl.closeInterpreter()

Par rapport à l'ancien breakIf cette approche permet d'éliminer un niveau supplémentaire d'indirection à la fois pour l'API if (qui a été enveloppé dans une => Boolean ) et le DebugParam / NamedParam (qui étaient des enveloppes temporaires utilisées uniquement pour remplir le champ bind arguments).

Cette approche vous permet également de spécifier votre Settings au besoin. Par exemple, certains bogues de REPL peuvent être contournés avec -Yrepl-sync pero break ne vous donne aucun moyen de spécifier que .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X