我正在编写一个消耗两个图像的函数,如果第一个大于第二个,则生成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个额外的部分,请告诉我出了什么问题
答案 0 :(得分:2)
值true
和false
只是简写为true
和false
。
(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)