定义Scheme中的结构。希望获得帮助
问题描述:
我对Scheme很新,我正在使用DrRacket,希望能得到一些急需的帮助。定义Scheme中的结构。希望获得帮助
我正在定义结构,我在某种程度上理解,但我似乎遇到了一个障碍。
我需要这样做,因此“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)))
答
首先你EmployeeRaise
函数应该做你的“签名”描述和采取employee
结构(由make-employee
返回),而不是一个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%正确的。但我认为我所描述的应该指向正确的方向。
它一开始并没有工作,但它在你刚刚编辑之后就起作用了。谢谢! – BBladem83 2014-09-20 04:33:59