Racket 能否在存储另一个函数返回值的函数内创建局部变量?
可以使用在过程中局部绑定变量。这将如下所示:Racket 能否在存储另一个函数返回值的函数内创建局部变量?,racket,Racket,可以使用在过程中局部绑定变量。这将如下所示: a1 = find-disk-area(r1) a2 = find-disk-area(r2) if( a1 > a2 ): print(a1 - a2) else: print(a2 - a1) 您还可以使用,以达到相同的效果,将标识符绑定到某个表达式的结果: (define (find-disk-area r) (* pi (sqr r))) (define (find-ring-area r1 r2) (le
a1 = find-disk-area(r1)
a2 = find-disk-area(r2)
if( a1 > a2 ):
print(a1 - a2)
else:
print(a2 - a1)
您还可以使用,以达到相同的效果,将标识符绑定到某个表达式的结果:
(define (find-disk-area r)
(* pi (sqr r)))
(define (find-ring-area r1 r2)
(let ([a1 (find-disk-area r1)]
[a2 (find-disk-area r2)])
(cond
[(> a1 a2) (- a1 a2)]
[else (- a2 a1)])))
此外,您可以通过执行以下操作来避免同时定义a1
和a2
:
(define (find-ring-area r1 r2)
(define (find-disk-area r)
(* pi (sqr r)))
(define a1 (find-disk-area r1))
(define a2 (find-disk-area r2))
(if (> a1 a2)
(- a1 a2)
(- a2 a1)))
(define (find-ring-area r1 r2)
(define (find-disk-area r)
(* pi (sqr r)))
(define a1 (find-disk-area r1))
(define a2 (find-disk-area r2))
(if (> a1 a2)
(- a1 a2)
(- a2 a1)))
(define (find-ring-area r1 r2)
(define (ring-area r1 r2)
(* pi (- (sqr r1) (sqr r2))))
(if (> r1 r2)
(ring-area r1 r2)
(ring-area r2 r1)))