Chcę powiązać *in*
, aby przesłać strumień z łańcucha zamiast "rzeczywistego" strumienia wejściowego. Jak mam to zrobic?Jak utworzyć strumień wejściowy, który czyta z łańcucha zamiast pliku lub adresu URL?
10
A
Odpowiedz
14
Wyjazd with-in-str
:
http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/with-in-str
ClojureDocs ma przykład użycia:
;; Given you have a function that will read from *in*
(defn prompt [question]
(println question)
(read-line))
user=> (prompt "How old are you?")
How old are you?
34 ; <== This is what you enter
"34" ; <== This is returned by the function
;; You can now simulate entering your age at the prompt by using with-in-str
user=> (with-in-str "34" (prompt "How old are you?"))
How old are you?
"34" ; <== The function now returns immediately
3
Oto przykładowy kod dla tego, co skończyło się robi. Ideą jest prosta funkcja pętli do odczytu/drukowania na serwerze, która pobiera strumień wejściowy i wyjściowy. Mój problem polegał na tym, jak generować strumienie testowe dla takiej funkcji, i pomyślałem, że funkcja string mogłaby to zrobić. Zamiast tego jest to potrzebne:
(ns test
(:use [clojure.java.io :only [reader writer]]))
(def prompt ">")
(defn test-client [in out]
(binding [*in* (reader in)
*out* (writer out)]
(print prompt) (flush)
(loop [input (read-line)]
(when input
(println (str "OUT:" input))
(print prompt) (flush)
(if (not= input "exit\n") (recur (read-line)))
))))
(def client-stream (java.io.PipedWriter.))
(def r (java.io.BufferedReader. (java.io.PipedReader. client-stream)))
(doto (Thread. #(do (test-client r *out*))) .start)
(.write client-stream "test\n")
Powiązane problemy
- 1. Ładowanie z łańcucha zamiast dokumentu/adresu URL
- 2. Jak utworzyć strumień multimediów z adresu URL blob?
- 3. Jak analizować JSON strumień wejściowy
- 4. Strumień wejściowy. Odczytuje zwrot 0 lub -1?
- 5. Importuj-CSV z łańcucha zamiast z pliku?
- 6. Node.js, analiza pliku z adresu URL
- 7. Jak utworzyć tag przebiegu zwrotnego z adresu URL?
- 8. REGEX: Przechwyć nazwę pliku z adresu URL bez rozszerzenia pliku
- 9. Jak przekonwertować obiekt na strumień wejściowy
- 10. jak konwertować strumień wejściowy do obiektu java
- 11. Pobranie katalogu ze ścieżki pliku lub adresu URL
- 12. Jak sklonować strumień wejściowy w języku Java w minimalnym czasie?
- 13. Posłuchaj konkretnego adresu URL zamiast portu
- 14. Wicket: Względem bezwzględnego adresu URL lub adresu URL bazy
- 15. Jak utworzyć bitset z łańcucha binarnego?
- 16. Jak utworzyć strumień równoległy z tablicy?
- 17. Czy TinyXml może załadować Xml z łańcucha zamiast z pliku?
- 18. Jak uniknąć kodowania adresu URL?
- 19. Jak uzyskać strumień wejściowy z obiektu HSSFWorkbook Object
- 20. Otwórz nową kartę z niestandardowym HTML zamiast adresu URL
- 21. Szykuje jak zażądać adresu URL z wyjątkiem parametrów adresu URL?
- 22. java nio czyta linie z pliku
- 23. Przesyłanie adresu URL pliku pjax w formacie
- 24. Jak utworzyć własny strumień ostream/streambuf?
- 25. Ukryj index.php (lub index.html) adresu URL
- 26. URL, aby pobrać plik wideo lub strumień z YouTube?
- 27. Jak dodać tekst niestandardowy zamiast adresu URL w wiadomości Deeplink
- 28. Utwórz strumień bez fizycznego pliku do utworzenia z
- 29. Jak obliczyć rozmiar pliku z adresu URL w java
- 30. Swift: AVPlayer - Jak uzyskać długość pliku mp3 z adresu URL?
Dzięki. To jest właściwa odpowiedź na to pytanie, ale to, czego naprawdę potrzebowałem, było trochę inne. Zobacz odpowiedź poniżej. – zippy
Czy możesz dodać również przykład, ponieważ podany link też go nie ma. –
Clojuredocs ma przykład: http://clojuredocs.org/clojure_core/clojure.core/with-in-str – sanityinc