我们如何实现我们(local ...)
在 Scheme 语法中定义的变量?例如在下面的这段代码中,
(define (erkan x)
(local
((define y 10))
(* x y)))
如何直接获取 y 的值?
我们如何实现我们(local ...)
在 Scheme 语法中定义的变量?例如在下面的这段代码中,
(define (erkan x)
(local
((define y 10))
(* x y)))
如何直接获取 y 的值?
当你在做的时候你正在访问。y
(* x y)
如果您想y
从local
-block 外部访问:您不能这样做。在 -block内进行的任何定义都是该local
块的本地定义,不能从外部访问。
要么这是一个奇怪的问题,要么你的措辞不正确......你的示例代码使用y
,所以它确实可以访问它。也许您正试图获得以下值y
:
(define (erkan x) (local [(define y 10)] y))
或者,也许您想创建一种“对象事物”——这是可能的,但涉及更高级的代码。这是一个简单的示例,只是为了向您展示它是如何完成的,(但如果您正在通过 HtDP,您最好将其留到以后)。
(define (erkan x)
(local [(define y 10)
(define (handler message)
(cond
[(eq? message 'get-x) x]
[(eq? message 'get-y) y]
[(eq? message 'compute) (* x y)]
[else (error "bad message")]))]
handler))
(define some-erkan (erkan 3))
(some-erkan 'get-x)
(some-erkan 'get-y)
(some-erkan 'compute)
(注意顺便说一句,这不是正确的方案,而是 HtDP 中使用的教学学生方言。)