如何找到锥的值?

时间:2013-01-20 18:36:41

标签: scheme racket

我刚开始拍球,请原谅我,如果这是一个愚蠢的问题。有人能告诉我究竟是做错了什么吗?我试图找到价值:

(cond
  [(<= (string-length s) 5) 10]
  [(string=? s “hello”) 50]
  [(string=? (substring s 1 4) “ell”) 25]
  [else 130])

当s为(i)"hello"且s为(ii)"hellos"时。

我做了一个与数字类似的地方,我所要做的就是用数字定义它并没有问题。我不知道我在这里做错了什么。

编辑 -

喜欢这个。他们在150000时要求n的值。     我只是将n定义为150000I,将“mb”作为值。

;;(define n 15000)

(cond
  [(<= n 1000) (number->string n)]
  [(<= n 5000) 
(string->symbol 
(string-append "num" (number->string n)))]
  [else (substring 
(string-append "number" (number->string n)) 2 4)])

我正试图用上面的方法来做。如果这有任何意义。

1 个答案:

答案 0 :(得分:1)

请注意,字符串必须由""包围才能生效,在您的代码中,您使用的是类似但不太正确的双引号。试试这个:

(define s "hello")

(cond
  [(<= (string-length s) 5) 10]
  [(string=? s "hello") 50]
  [(string=? (substring s 1 4) "ell") 25]
  [else 130])

除此之外,代码本身没有错误,但由于 order ,其中获得的结果可能不是您期望的结果,其中不同的条件出现在{{1尝试切换一些,重组它们等等。

请记住,条件是从上到下进行评估,并且将执行第一个为true的条件。例如,如果输入为cond"hello"将在(<= (string-length s) 5)之前进行评估和执行,因为第一个条件为真,并且永远不会达到第二个条件,因此永远不会执行。