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
可能的重复(因为球拍中的这些操作员与方案标准兼容)