Racket博士 - 教授给我们发了这个代码;不确定它在做什么。想澄清一下

时间:2014-09-15 04:01:12

标签: ascii racket

代码段就是这个......

(define (my-make-list n)
  (build-list n (λ (x) (build-string 50 (λ (x) (integer->char (+ 65 (make-random-integer)))))))
)

显然这会创建my-make-list函数。然后该函数构建一个由50个字符串组成的列表,我丢失的是lambda正在做什么以及+65的重要性是什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

正如Edper评论的那样,65是ASCII字符A的值。将1添加到值将给出字符B的值(66)。添加2将为C(90)提供Z(67),... 25的值。

因此,假设make-random-integer生成0到25之间的随机数,my-make-list会返回 n 随机大写字符串(长度为50个字符)。

> (require racket/math)
> (define (my-make-list n)
  (build-list n (λ (x) (build-string 50 (λ (x) (integer->char (+ 65 (make-random-integer))))))))
> (define (make-random-integer) (exact-floor (* (random) 26)))
> (my-make-list 1)
'("BXXCBXVQEERWLETALMZZSVSVGIEXPYLKQNXTYLASRKLCNOONRN")
> (my-make-list 3)
'("EAUHIHEEKIKQFDWSUXOLAFKBEYCDZKDRQNMGTHKMUNIUGTMRSD"
  "GUMWLTOYHCZMQVCTZHIIPRMGXFOKNYAWEVOVSLCWXLFCIYNHKT"
  "PBJDEFPLZHTCQEXIVEAGEFPTFXCRDWJVXIIHDJUCNYLPJAYWCA")