Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scheme中定义结构。希望得到帮助_Scheme_Structure_Racket - Fatal编程技术网

在Scheme中定义结构。希望得到帮助

在Scheme中定义结构。希望得到帮助,scheme,structure,racket,Scheme,Structure,Racket,我对这个计划还比较陌生,我正在使用DrRacket,我希望能得到一些急需的帮助 我正在定义结构,我在某种程度上理解它,但我似乎遇到了障碍 我需要使“EmployeeRaise”函数适用于所有检查预期,而不是使其仅适用于一个特定的检查预期 主要问题是,在定义中,更具体地说,在黑体部分 (+(员工小时工资em)(*(员工小时工资em)0.1))) 我似乎不知道它如何确定每个人的员工时薪,而不是定义为“em”的员工 我想让所有三名员工都用“em”来定义,但它不允许我这么做 我希望有人能帮助我 这是我的

我对这个计划还比较陌生,我正在使用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)))

首先,您的
EmployeeRaise
函数应该按照您在“签名”中描述的那样执行,并采用
employee
结构(由
make employee
返回),而不是
字符串。因此,让我们将参数的名称更改为
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)))
注意,这个函数现在是在它得到的参数上运行的,而不是之前的“全局变量”

接下来,为了进行测试,您可以这样做:

(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
返回),而不是
字符串。因此,让我们将参数的名称更改为
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)))
注意,这个函数现在是在它得到的参数上运行的,而不是之前的“全局变量”

接下来,为了进行测试,您可以这样做:

(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%正确。但我认为我所描述的应该为您指出正确的方向。

它起初不起作用,但在您刚刚编辑它之后就起作用了。非常感谢。起初它不起作用,但在你刚刚编辑它之后它就起作用了。非常感谢。