1
想對被輸入了標準輸出的列表作爲列表我如何做一個清單出來一個輸入的讀線的球拍
(define USER_INPUT (list (read-line)))
當我輸入列表,我不斷收到此錯誤,因爲該列表,以輸入它; S在地圖
map: contract violation
expected: list?
given: "10 10 10 10 10 10 10 10 10"
想對被輸入了標準輸出的列表作爲列表我如何做一個清單出來一個輸入的讀線的球拍
(define USER_INPUT (list (read-line)))
當我輸入列表,我不斷收到此錯誤,因爲該列表,以輸入它; S在地圖
map: contract violation
expected: list?
given: "10 10 10 10 10 10 10 10 10"
麻煩的過程中使用的是(read-line)
產生一個字符串,所以你剛剛結束了一個字符串元素的列表。如果您特別想讀取數字列表,請將字符串拆分爲空格並將所有元素轉換爲數字。
(map string->number (string-split (read-line)))
在另一方面,如果你真的想用球拍語法的全功率表來讀取,你可以使用read
。
> (read)
(10 10 10)
'(10 10 10)
如果要指定列表內容但不希望包括括號,好了,你可以做到這一點。
(read (open-input-string (format "(~a)" (read-line))))
非常感謝Alexis!我是Racket新手,現在我已經玩了幾個星期了。你是非常有幫助的 – JJ12 2014-12-05 09:58:22
對於後一種情況,你也可以做'(sequence-> list(with-input-from-string(read-line)in-port))'或者甚至只是'(with-input-from -string(read-line)in-port)'如果一個序列足夠。 – blubberdiblub 2017-04-21 08:18:40