好吧,我遇到了一个我编写的函数,它多次使用相同的代码。
下面是一个示例:
(define (get-min&max-from-mixed-list mixedList)
(if (null? (sublist-numbers mixedList))
'()
(min&maxRec (sublist-numbers mixedList)
(first (sublist-numbers mixedList)) ; this
(first (sublist-numbers mixedList))) ; and this
)
)
在过程编程语言中,我会这样做:
int x = (first (sublist-numbers mixedList))
min&maxRec(sublist-numbers(mixedList) , x , x)
根据我对函数式语言的理解,我们不会将东西保存在内存中,然后我们使用它们。那么我怎么能不重复代码呢?
您可以使用
let
将值绑定到符号,并在let
体内随意使用该符号。
它和相关表格的文档在这里:https://docs.racket-lang.org/reference/let.html
您可以在示例中使用它,如下所示:
(define (get-min&max-from-mixed-list mixedList)
(let ((snm (sublist-numbers mixedList)))
(if (null? snm)
'()
(min&maxRec snm
(first snm)
(first snm))
)
)
)