如何不在球拍中重复代码
how not to duplicate code in Racket
好吧,我遇到了一个我编写的函数,它多次使用相同的代码。
这里有一个例子:
(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))
)
)
)
好吧,我遇到了一个我编写的函数,它多次使用相同的代码。
这里有一个例子:
(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))
)
)
)