Czy to możliwe, a jeśli tak, jak to zrobić? Zwykłe >
i >>
, które działają na linii poleceń systemu Windows lub Linux, nie działają w tym kontekście.Scala interactive interpreter (REPL) - jak przekierować wyjście do pliku tekstowego?
Odpowiedz
Można to zrobić programmaticaly z konsoli:
import java.io.FileOutputStream
import scala.Console
Console.setOut(new FileOutputStream("<output file path>"))
odtąd wszystkich print
i println
będą kierowane do tego pliku
To jasne, z pytaniem, jak chcesz korzystać z takiego . Przykład tego, co próbujesz zrobić, może pomóc.
Oto niejawna funkcja, która doda prosty operator, który zapisuje dowolny obiekt jako ciąg do pliku. (Zauważ, że używam >>
oznaczać stylu Unix >
od >
już ma sens w Scala („mniej niż”). Można zastąpić to z innego operatora, jeśli chcesz.)
implicit def anyToFileOutput(self: Any) = new {
import java.io._
def >>(filename: String) {
val f = new BufferedWriter(new FileWriter(filename))
try {
f.write(self.toString)
} finally {
if (f != null)
f.close()
}
}
}
byś używać go tak:
scala> List(1,2,3) >> "out.txt"
który wytwarza plik „out.txt” w katalogu roboczym zawierającym List(1, 2, 3)
To jest to, co próbuję zrobić - na przykład, jeśli nazywam 'calculSomething (a, b, c)', który zwraca listę 'Int's, idealnie byłoby kierować' print' i 'println' w pliku 'calculateSomething 'w instrukcjach, a także wysłać wynik zwracanej listy do pliku. – Gigatron
Wygląda, że działa dobrze do mnie:
[email protected]:~/github/scala (master)$ scala -e "println(2 * 2)" > output
[email protected]:~/github/scala (master)$ cat output
4
Dzięki, ale to w linii poleceń OS, a nie w działającej sesji REPL. – Gigatron
@Gigatron Wystarczy wygenerować ciągi zamiast drukowania, a następnie można je łatwo wysłać do plików. Z drugiej strony, jeśli pokazałeś, co chcesz osiągnąć, zamiast pytać, jak wdrożyć pożądane rozwiązanie, wszyscy moglibyśmy być o wiele bardziej pomocni. –
- 1. Jak przekierować wyjście konsoli do pliku tekstowego
- 2. Jak mogę przekierować wyjście nosetests do pliku tekstowego?
- 3. Jak przekierować wyjście kompilatora gcc do pliku?
- 4. Zapis wyjście do pliku tekstowego w PowerShell
- 5. Jak mogę przekierować wyjście funkcji kości do pliku w Perlu?
- 6. Jak mogę przekierować wyjście portu COM Windows do pliku?
- 7. Scala - Inicjowanie środowiska REPL
- 8. Jak przekierować Boost.Log do pliku
- 9. jak przekierować wyjście polecenia do dwóch plików
- 10. Python: Jak mogę przekierować to wyjście?
- 11. Scala REPL w Emacs
- 12. Scala REPL: Jak dodać zdalne repozytorium Maven do ścieżki klas REPL Scala?
- 13. Jak korzystać z "reverse interactive search" w NodeJS REPL?
- 14. Jak przekierować wyjście programu konsoli do pola tekstowego w sposób bezpieczny dla wątków?
- 15. Python: Jak przekierować wyjście z podprocesorem?
- 16. Używanie polecenia Linux Grep - potrzebne wyjście do pliku tekstowego, czystsze wyjście
- 17. Jak zapisać wyjście pliku AUGraph do pliku?
- 18. Jak wyczyścić wszystkie zmienne w Scala REPL
- 19. Scala REPL: Jak znaleźć typ funkcji?
- 20. Jak przekierować wyjście z polecenia dd do/dev/null?
- 21. Jak przekierować wyjście log4j do mojego strumienia wyjściowego HttpServletResponse?
- 22. Jak przekierować wyjście standardowe do nowej karty Vima?
- 23. Jaka jest różnica między Clojure REPL i Scala REPL?
- 24. Jak mogę uzyskać dostęp do ostatniego wyniku w Scala REPL?
- 25. Różnica między Scala REPL i Clojure REPL - kompilacja prędkość
- 26. Przekieruj standardowe wyjście z SBT do pliku
- 27. Strace wyjście Tmux przekierowane do pliku
- 28. przekierowanie wyjścia do pliku tekstowego w C#
- 29. Skrót do zatrzymania REPL?
- 30. Jak przekierować wyjście z dala od/dev/null
'setOut' nie działa w wersji 2.9 REPL ze względu na [SI-4793] (https://issues.scala-lang.org/browse/SI-4793). Zobacz [moja odpowiedź] (http://stackoverflow.com/questions/7219316/println-vs-system-out-println-in-scala/7219519#7219519) – 4e6
Chociaż nie jest doskonały, akceptuję to jako najbardziej przydatna odpowiedź. Zauważam, że w pliku nie ma nic, dopóki nie wyjdę z REPL. Aby obejść ten problem, należy zapisać 'FileOutputStream' w' val', a następnie wywołać 'close', aby opróżnić zawartość do pliku. – Gigatron