我刚开始拍球,请原谅我,如果这是一个愚蠢的问题。有人能告诉我究竟是做错了什么吗?我试图找到价值:
(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)])
我正试图用上面的方法来做。如果这有任何意义。
答案 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)
之前进行评估和执行,因为第一个条件为真,并且永远不会达到第二个条件,因此永远不会执行。