博士球拍代码错误开始学生语言

时间:2015-06-17 20:27:19

标签: racket

我正在编写一个消耗两个图像的函数,如果第一个大于第二个,则生成true  这是我的代码

 (require 2htdp/image)

  (check-expect(image1 30 40)false)
    (check-expect(image1 50 20)true)

(define(image1 x y)
 (begin
 ( circle x "solid" "blue")

(circle y "solid" "blue")
  (if(> x y)
     "true"
     "false")))


(image1 500 100)

但它通过突出显示代码的这一部分 - >(圈y“实心”“蓝色”)一次又一次地显示相同的错误,错误是> define:期望函数体只有一个表达式,但找到2个额外的部分,请告诉我出了什么问题

1 个答案:

答案 0 :(得分:2)

truefalse只是简写为truefalse

(define (image1 x y)
  (circle x "solid" "blue")
  (circle y "solid" "blue")
  (if (> x y)
      true
      false))

请注意,您的功能不使用图像,因此您可以编写

(define (image1 x y)
  (if (> x y)
      true
      false))

但我想这只是一个例子。

更新

您可以使用本地定义为临时值命名:

(define (image1 x y)
  (local 
    [(define c1 (circle x "solid" "blue"))
     (define c2 (circle y "solid" "blue"))]
  (if (> x y)
      true
      false)))

更新

(define (larger? image1 image2)
  (and (> (image-width  image1) (image-width  image2) 
       (> (image-height image1) (image-height image2)))

更新

这是一个完整的例子:

(define circle1 (circle 20 "solid" "blue"))
(define circle2 (circle 30 "solid" "blue"))

(define (larger? image1 image2)
  (and (> (image-width  image1) (image-width  image2))
       (> (image-height image1) (image-height image2))))

(larger? circle1 circle2)