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)))