我对Scheme很新,我正在使用DrRacket,我希望得到一些急需的帮助.
我正在定义结构,我在某种程度上理解,但我似乎遇到了障碍.
我需要做到这一点,因此"EmployeeRaise"函数适用于所有检查期望,而不会使它只能用于一个特定的检查期望.
主要问题是在定义中,更具体地说,在粗体部分,
(+(员工 - 小时率em)(*(员工 - 小时率em)0.1)))
我似乎无法弄清楚它如何确定每个人的员工每小时费率,而不是那个用"em"定义的员工.
我认为将所有三名员工都定义为"em",但不会让我这样做.
我希望有人可以帮助我.
这是我的代码:
(define-struct employee (Name Hourly-rate overtime?)) ;;Signature: EmployeeRaise: string -> number ;;Purpose: Consumes an employee and returns an employee with the hourly rate increased by 10%. ;;Tests (check-expect (EmployeeRaise "Ben") 13.2) (check-expect (EmployeeRaise "Joe") 16.5) (check-expect (EmployeeRaise "Debbie") 22) ;; Define (define (EmployeeRaise employee-Name) (+ (employee-Hourly-rate em) (* (employee-Hourly-rate em) 0.1)))
Greg Henders.. 5
首先,您的EmployeeRaise
函数应该执行您在"签名"中描述的内容并采用employee
结构(由返回make-employee
),而不是a string
.所以让我们改变参数的名称em
来反映:
;;Signature: EmployeeRaise: employee -> number ;;Purpose: Consumes an employee and returns an employee with the hourly rate increased by 10%. ;;Tests (define (EmployeeRaise em) (+ (employee-Hourly-rate em) (* (employee-Hourly-rate em) 0.1)))
请注意,此函数现在正在对em
它所获得的参数进行操作- 而不是之前的em
"全局变量".
接下来,为了测试你可以这样做:
(define ben (make-employee "Ben" 12 true)) (define joe (make-employee "Joe" 15 false)) (define deb (make-employee "Debbie" 20 true)) (check-expect (EmployeeRaise ben) 13.2) (check-expect (EmployeeRaise joe) 16.5) (check-expect (EmployeeRaise deb) 22)
或者只是这个:
(check-expect (EmployeeRaise (make-employee "Ben" 12 true)) 13.2) (check-expect (EmployeeRaise (make-employee "Joe" 15 false)) 16.5) (check-expect (EmployeeRaise (make-employee "Debbie" 20 true)) 22)
注意:我猜你正在使用htdp语言?由于我对它们了解不多,我无法猜出哪一个,我无法运行上面的代码以确保它是100%正确的.但我认为我所描述的应该指向正确的方向.
首先,您的EmployeeRaise
函数应该执行您在"签名"中描述的内容并采用employee
结构(由返回make-employee
),而不是a string
.所以让我们改变参数的名称em
来反映:
;;Signature: EmployeeRaise: employee -> number ;;Purpose: Consumes an employee and returns an employee with the hourly rate increased by 10%. ;;Tests (define (EmployeeRaise em) (+ (employee-Hourly-rate em) (* (employee-Hourly-rate em) 0.1)))
请注意,此函数现在正在对em
它所获得的参数进行操作- 而不是之前的em
"全局变量".
接下来,为了测试你可以这样做:
(define ben (make-employee "Ben" 12 true)) (define joe (make-employee "Joe" 15 false)) (define deb (make-employee "Debbie" 20 true)) (check-expect (EmployeeRaise ben) 13.2) (check-expect (EmployeeRaise joe) 16.5) (check-expect (EmployeeRaise deb) 22)
或者只是这个:
(check-expect (EmployeeRaise (make-employee "Ben" 12 true)) 13.2) (check-expect (EmployeeRaise (make-employee "Joe" 15 false)) 16.5) (check-expect (EmployeeRaise (make-employee "Debbie" 20 true)) 22)
注意:我猜你正在使用htdp语言?由于我对它们了解不多,我无法猜出哪一个,我无法运行上面的代码以确保它是100%正确的.但我认为我所描述的应该指向正确的方向.