2012-12-07 59 views
1

我得到一個字符串作爲輸入,並且我想將它存儲在一個數組或一個向量中,所以我將能夠檢查斷開的字符串的值。如何將破碎的方案字符串存儲在數組或向量中?

在這裏,我打破了字符串轉換成字符:

(define (dealBreaker str) (string->list str)) ; break the string into chars 

但是,當我試圖聲明一個簡單的載體:

(define (myVector (make-vector 4 (/ 1 2)))) 

我得到這個:#%plain-lambda: not an identifier in: (make-vector 4 (/ 1 2))

我怎樣才能申報從dealBreaker以上的方法破壞字符的矢量調用someVector

回答

3

試試這個,對於一些str字符串:

​​

以上將創建一個從字符串中的字符的新載體,是你需要什麼?

1

你與myVector有眼前的問題似乎是因放錯位置的括號 - 相反試試這個,看看它是否解決了「純拉姆達」的錯誤:

(define myVector (make-vector 4 (/ 1 2))) 

在轉換的問題該「因素在於」字符串向量,你應該能夠做到這一點:

(define (someVector dealBreakerList) (list->vector dealBreakerList)) 

(someVector (dealBreaker "someString")) 

或者,如果你想「someVector」爲一體的完整功能:

(define (someVector str) (list->vector (string->list str))) 

(someVector "someString") 
+0

(定義myVector2(make-vector 4(/ 1 2))) – ron

+1

糟糕 - 丟失了最後一個paren。編輯修復 - 謝謝@龍。 –

2

在這裏的問題是,define應該

(define identifier value) 

但現在你有

(define (identifier value)) 

所以儘量

(define myVector (make-vector 4 (/ 1 2))) 

這是一個有點混亂,因爲在計劃,定義超載,還有

(define (functionName formals) body) 

但這是純粹的語法糖

(define functionName 
    (lambda formals body)) 

旁註:一些初學者方案教科書推薦使用拉姆達的版本,因爲它更加明確。

在這種情況下,雖然,只是做:

(define myVec (list->vector (dealBreaker str))) 
+0

Downvoter關心評論? – jozefg

相關問題