您可以在存储其他函数返回值的函数内部创建局部变量吗?

墨水播放_
#lang racket

; function for calculating circle area.
(define (find-disk-area r ) (* 3.14 (* r r)))

; function for finding the ring size.
(define (find-ring-area r1 r2)
  (
     ;let((a1 (find-disk-area r1))) <- syntax error cond: bad syntax in: cond
     ;(set! (find-disk-area r1) a1) <- syntax error cond: bad syntax in: cond
     ; how do I create two local variable inside of this
     ; function so I don't need to call find-disk-area 4 times?
     cond
     [(> r1 r2) (- (find-disk-area r1) (find-disk-area r2))]
     [else (- (find-disk-area r2) (find-disk-area r1))]
     )
  )

(find-ring-area 100 90)

从上面可以看到,我必须调用find-disk-area帮助函数4次。我想调用辅助函数两次,存储2个圆的面积,然后使用存储的值来计算cond圆环,以确保我们从较大的圆中减去较小的圆。我是该语言的新手,并且前缀语法样式使我无法接受。

如果我用python编写,则find ring函数的主体将类似于:

a1 = find-disk-area(r1)
a2 = find-disk-area(r2)

if( a1 > a2 ):
    print(a1 - a2)
else:
    print(a2 - a1)
阿瑟法玛鲁

您可以使用let在过程中本地绑定变量。如下所示:

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

您还可以使用define达到相同的效果,将标识符绑定到某些表达式的结果:

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

此外,就可以避免定义a1a2做完全:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

警告:函数返回局部变量的地址

来自分类Dev

在评估函数返回值之前或之后是否销毁了局部变量?

来自分类Dev

您可以在C ++中返回字符串对象的局部变量吗?

来自分类Dev

您可以在不创建实例的情况下使用其他文件类中的函数吗?

来自分类Dev

使用分配给函数的返回值的局部变量或直接使用函数

来自分类Dev

从其他函数PHP访问局部变量

来自分类Dev

将函数返回值存储到变量中

来自分类Dev

检查局部变量返回的函数

来自分类Dev

返回值未传递给其他函数

来自分类Dev

如何在其他函数烧瓶中使用局部变量?

来自分类Dev

我们可以在constexpr函数的局部变量上省略const吗?

来自分类Dev

为什么javascript可以持久化外部函数中发生的局部变量重新分配而不必捕获返回值?

来自分类Dev

如何更改返回局部变量的函数

来自分类Dev

JavaScript Fetch无法返回值调用其他函数

来自分类Dev

为什么您可以使用其他方法而不使用赋值运算符在函数中更改Ruby中局部变量的值?

来自分类Dev

无法从其他文件中的函数返回值

来自分类Dev

函数仍然可以访问局部变量吗?

来自分类Dev

从Scala的内部循环返回值,使用函数代替吗?

来自分类Dev

如何在主函数内部创建局部变量?

来自分类Dev

递归函数中返回的局部变量

来自分类Dev

在其他函数中传递局部变量的值时出错

来自分类Dev

在调用函数内部的其他函数之前,函数如何以及在何处保存“一个函数的返回值”?

来自分类Dev

为什么javascript可以持久化外部函数中发生的局部变量重新分配而不必捕获返回值?

来自分类Dev

内联函数中的变量可以与局部变量冲突吗?

来自分类Dev

如何将函数的返回值赋给局部变量?

来自分类Dev

返回值比返回局部变量更好吗?

来自分类Dev

将随机数的返回值存储为局部变量?

来自分类Dev

我可以访问函数返回值两次而不将其存储在变量中或再次调用函数吗?

来自分类Dev

将函数返回值存储到变量中

Related 相关文章

  1. 1

    警告:函数返回局部变量的地址

  2. 2

    在评估函数返回值之前或之后是否销毁了局部变量?

  3. 3

    您可以在C ++中返回字符串对象的局部变量吗?

  4. 4

    您可以在不创建实例的情况下使用其他文件类中的函数吗?

  5. 5

    使用分配给函数的返回值的局部变量或直接使用函数

  6. 6

    从其他函数PHP访问局部变量

  7. 7

    将函数返回值存储到变量中

  8. 8

    检查局部变量返回的函数

  9. 9

    返回值未传递给其他函数

  10. 10

    如何在其他函数烧瓶中使用局部变量?

  11. 11

    我们可以在constexpr函数的局部变量上省略const吗?

  12. 12

    为什么javascript可以持久化外部函数中发生的局部变量重新分配而不必捕获返回值?

  13. 13

    如何更改返回局部变量的函数

  14. 14

    JavaScript Fetch无法返回值调用其他函数

  15. 15

    为什么您可以使用其他方法而不使用赋值运算符在函数中更改Ruby中局部变量的值?

  16. 16

    无法从其他文件中的函数返回值

  17. 17

    函数仍然可以访问局部变量吗?

  18. 18

    从Scala的内部循环返回值,使用函数代替吗?

  19. 19

    如何在主函数内部创建局部变量?

  20. 20

    递归函数中返回的局部变量

  21. 21

    在其他函数中传递局部变量的值时出错

  22. 22

    在调用函数内部的其他函数之前,函数如何以及在何处保存“一个函数的返回值”?

  23. 23

    为什么javascript可以持久化外部函数中发生的局部变量重新分配而不必捕获返回值?

  24. 24

    内联函数中的变量可以与局部变量冲突吗?

  25. 25

    如何将函数的返回值赋给局部变量?

  26. 26

    返回值比返回局部变量更好吗?

  27. 27

    将随机数的返回值存储为局部变量?

  28. 28

    我可以访问函数返回值两次而不将其存储在变量中或再次调用函数吗?

  29. 29

    将函数返回值存储到变量中

热门标签

归档