Scheme 为什么这些线在球拍上不同

Scheme 为什么这些线在球拍上不同,scheme,racket,Scheme,Racket,我正在运行以下代码: (define myframe (new frame% [label "myframe"])) (define tf1 (new text-field% [parent myframe] [label "tf1"])) (define tf2 (new text-field% [parent myframe][label "tf2"])) (define tf3 (new text-field% [parent myframe][label "tf3"]))

我正在运行以下代码:

(define  myframe  (new frame% [label "myframe"]))

(define tf1 (new text-field%  [parent myframe] [label "tf1"]))
(define tf2 (new text-field%  [parent myframe][label "tf2"]))
(define tf3 (new text-field%  [parent myframe][label "tf3"]))

(send  myframe show #t)

(define combined_str (string-append (send tf1 get-value) "-" (send tf2 get-value) "-" (send tf3 get-value) )) 
(println combined_str)
(if (eq? "--" combined_str) "same" "different")
输出为:

"--"
"different"

组合的_str为“-”,因为文本字段为空。但它与“-”不同,这几乎可以肯定是由使用
eq?
而不是
equal?
引起的。有关更多信息,请参见。简而言之,
eq?
执行指针比较,这不是您想要的

示例:

> (eq? "--" (string-append "-" "-"))
#f
> (equal? "--" (string-append "-" "-"))
#t
> (string=? "--" (string-append "-" "-"))
#t
可能的重复(因为球拍中的这些操作员与方案标准兼容)