2012-12-07 24 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

相关问题