Ah, well, that was more straightforward than I expected. I was lazy with my 
Saturday-night learning session and didn't push very hard to solve it on my 
own. Thank you for taking the time to help. I also appreciate that you 
caught those bugs and improved the code style. Thanks again.


On Saturday, May 25, 2019 at 8:19:23 PM UTC-7, Sorawee Porncharoenwase 
wrote:
>
> Just abstract the common part out? E.g.,
>
> (define (update-text-field read-field write-field converter)
>   (define text (send read-field get-value))
>   (cond
>     [(string=? text "")
>      (send read-field set-field-background (make-object color% 255 255 255 1))
>      (send write-field set-value "")]
>     [(number? (string->number text))
>      (send read-field set-field-background (make-object color% 255 255 255 1))
>      (send write-field set-value (converter (string->number text)))]
>     [else
>      (send read-field set-field-background (make-object color% 255 0 0 1))
>      (send write-field set-value "")]))
>
> (define (update-fahrenheit control event)
>   (update-text-field text-celsius text-fahrenheit convert-c))
>
> (define (update-celsius control event)
>   (update-text-field text-fahrenheit text-celsius convert-f))
>
> Note that your original code has a bug: you always use convert-c in both 
> directions. Obviously, in update-celsius you want to use convert-f.
>
> There’s also another subtle bug that I didn’t fix. Suppose you type an 
> invalid character (like “a”) to the left text field. This will make the 
> field become red. Now, switch to the right field and type “32”. The left 
> field will output “0” while being red, though it probably should now be 
> white.
>
> On Sat, May 25, 2019 at 7:57 PM Travis Hinkelman <[email protected] 
> <javascript:>> wrote:
>
>> Hi All,
>>
>> I'm working through the tasks in 7guis 
>> <https://eugenkiss.github.io/7guis/tasks> to learn about GUI programming 
>> in Racket. My code 
>> <https://gist.github.com/hinkelman/e35d4abf3203277c4428bcd6abad8183> for 
>> the temperature converter task works as expected but there is a lot of 
>> redundancy in my update-fahrenheit and update-celsius callback functions. I 
>> would appreciate feedback on how to make this code less redundant.
>>
>> Thanks,
>>
>> Travis
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Racket Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/8f97260c-62be-4a6f-9459-244a88632ef9%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/racket-users/8f97260c-62be-4a6f-9459-244a88632ef9%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/f730a304-2edc-4257-a0ed-0c66f417ee19%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to