Comment puis-je éviter de faire dupliquer le J'ai essayé de vous adapter à partir des éléments suivants: p> Mais de cette façon, j'ai un java si code> condition de mon code: essayer code> à l'intérieur d'un scala essayez code> qui ne semble pas juste. Comment puis-je éviter d'avoir deux blocs d'essai? Je veux fondamentalement, je veux juste que la ressource que j'ai acquise soit nettoyée après la fin de la méthode d'exécution. P> p>
3 Réponses :
Avec SCALA 2.13, vous pouvez écrire ce qui suit à l'aide de scala.util.utilisant code>
Au lieu de la correspondance {} code> Je vais avec .fold () code>, mais c'est juste moi.
Ouais, je veux garder le style original de la question
Je suis sur 2.12 - Je ne peux pas passer à 2.13
Pourquoi ne pas simplement déplacer le out.close () code> en dehors du résultat du bloc d'essai? Si le même chèque est effectué, quel que soit le succès ou une échec, je ne vois pas le bénéfice de le faire là-bas. Quelque chose comme ceci:
Si vous ne pouvez pas utiliser ou modèle de prêt: p> Si vous avez un effet CATS (et si vous remplacez Essayez d'essayer avec quelque chose qui est légal), vous pouvez utiliser la ressource p> à l'aide de code>, vous pouvez utiliser try-attrape-enfin code>:
Vous n'avez pas besoin de vérifier
si (out! = null) code>.OUT CODE> est défini à tout moment en tant queNouveau FileWriter ("/ TMP / FOO.TXT") code>. Pouvez-vous s'il vous plaît expliquer ce que vous voulez réaliser avec vos changements?Je tiens à vous assurer que les ressources que j'ai acquises sont libérées lorsque le thread finit l'exécution de la méthode. C'est la poignée du fichier.
Si de nouvelles lancers, vous n'atteinez pas ce
si code> bloc du tout et sineuf code> ne lancera pasout! = Null code> toujours.