2014-05-02 48 views
1

我目前編程方案,我已經寫了下面的記錄程序,與性格特徵強度(=斯塔克),知識記錄的生物(= kreatur德文) (= WISSEN),並願意承擔風險(= risikobereitschaft),我定義了一個名爲「ronugor」和「garnolaf」兩個生物(名字是不是我的主意,其從練習,我沒有拿出;))和然後我寫了一個程序來混合這兩個生物的特徵(強度-5%,知識不變,準備好承擔風險仍然爲0),以接收一個名爲「ronulaf」的新生物。方案檢查期望的輸出記錄與記錄程序合併

這是我的代碼:

(: stärke (kreatur -> number)) 
    (: wissen (kreatur -> number)) 
    (: risikobereitschaft (kreatur -> number)) 
    (define-record-procedures kreatur 
     make-kreatur 
     kreatur? 
     (stärke 
     wissen 
     risikobereitschaft)) 


    ; check-property (i kept this out of the posted code to shorten it) 


    ;define the creatures garnolaf and ronugor 
    (: make-kreatur (number number number -> kreatur)) 
    (define garnolaf 
     (make-kreatur 100 0 0)) 

    (: make-kreatur (number number number -> kreatur)) 
    (define ronugor 
     (make-kreatur 0 100 0)) 


    ;signaturen 
    (: garnolaf? (kreatur -> boolean)) 
    (check-expect (garnolaf? garnolaf) #t) 
    (check-expect (garnolaf? ronugor) #f) 
    (define garnolaf? 
     (lambda (x) 
      (and (= (stärke x) 100) 
       (= (wissen x) 0) 
       (= (risikobereitschaft x) 0)))) 

    (: ronugor? (kreatur -> boolean)) 
    (check-expect (ronugor? garnolaf) #f) 
    (check-expect (ronugor? ronugor) #t) 
    (define ronugor? 
     (lambda (x) 
      (and (= (stärke x) 0) 
       (= (wissen x) 100) 
       (= (risikobereitschaft x) 0)))) 


    ;mixing of the creatures 
    (: ronulaf (kreatur kreatur -> kreatur)) 
    ;this is where i am missing a check-expect, i suppose 
    (define ronulaf 
     (lambda (r g) 
      (make-kreatur (* 0.95 (stärke g)) 
         (wissen r) 
         0))) 

的問題,我現在是怎樣,我可以寫一張支票,期望的程序ronulaf。我會寫這是這樣的:

(check-expect (ronulaf ronugor garnolaf) #<record:kreatur 95.0 100 0>) 

但它不起作用。任何人對檢查期望都有更好的想法嗎?

謝謝了! eva

回答

0

請注意您的garnolaf?ronugor?程序是如何編寫的?現在寫一些類似ronulaf的東西。而已!

0

試試這個:

(check-expect (ronulaf ronugor garnolaf) (make-kreatur 95 100 0)) 

不是所有的對象進入閱讀併成爲對象表示可以養活。 #<在開始時使它看起來像一個評估程序,對於這些程序也是如此。

+0

首先感謝您的回答:)但是,如果我嘗試接收以下錯誤: 檢查期望遇到以下錯誤,而不是預期值#。 正如我前面在我的崗位#說<記錄:kreatur 95 100 0>不工作,要麼雖然... –

+0

你確定你使用的是從DeinProgramm正確的語言?在球拍的語言,你會使用[結構](http://docs.racket-lang.org/reference/define-struct.html?q=struct&q=rackunit&q=unit&q=define-record-procedures#%28form._ %28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct%29%29)和[rackunit](http://docs.racket-lang.org/rackunit/api.html?q=rackunit&q=unit&q = define-record-procedures) – Sylwester

+0

我正在使用「DeinProgramm,Die Macht der Abstraktion-Anfänger」,它將被翻譯爲「DeinProgramm,抽象力 - 初學者」。這是「DeinProgramm」中的第一個選項。我不知道這是否是正確的語言,但它是我們必須用於上大學的語言...... –