Tôi đang làm việc trong Racket nhưng theo như tôi biết đây là trường hợp trong Đề án nói chung; bạn không thể làm một cái gì đó như thế này bởi vì chúng tôi đang cố gắng để xác định cái gì đó trong một bối cảnh biểu:Làm thế nào để xác định thực tế rất nhiều thứ dựa trên một điều kiện trong Đề án/Racket?
(if condition
(define x "do a backflip")
(define x "do a barrel roll"))
Bây giờ đối với trường hợp đặc biệt này, tôi có thể làm một cái gì đó giống như thay vì điều này:
(define x
(if condition
"do a backflip"
"do a barrel roll"))
Nhưng nếu bạn có một rất nhiều thứ khác nhau để xác định này được thực sự khủng khiếp, bởi vì thay vì
(if condition
(begin (define x "do a backflip")
(define y "awesome")
(define z "shoot me"))
(begin (define x "do a barrel roll")
(define y "nice")
(define z "give me sweet release")))
chúng tôi nhận
(define x
(if condition
"do a backflip"
"do a barrel roll"))
(define y
(if condition
"awesome"
"nice"))
(define z
(if condition
"shoot me"
"give me sweet release"))
Điều này không phải là DRY vì có thể, chúng tôi liên tục lặp lại thử nghiệm cho condition
. Và kết quả là nếu thay vì thử nghiệm cho condition
, chúng tôi muốn kiểm tra other-condition
, chúng tôi phải thực hiện thay đổi n
lần cho n
số lượng những thứ đang được xác định. Có cách nào tốt hơn để làm điều này, và nếu có: Làm thế nào?
Lợi thế của điều này trên 'giá trị xác định' là gì? – Wysaard