Замедленное возвращение для данного академического c года - PullRequest
0 голосов
/ 20 февраля 2020
(defn(yearCode [year]
    (if (= year "freshman") 1
        (if (= year "sophomore") 2
            if (= year "junior") 3
               if (= year "senior") 4 0) 
             )
         )
    )
)


(defn -main []
    (println "\n To find your year:") 
    (print "enter your year: ") (flush) 
    (let 
    [ year (read) ]
        (print "\n your year is ") 
        (print (yearCode year))
        (print "\n\n") 
    )
 )

Я попытался запустить свой код, но получаю синтаксическую ошибку

Синтаксическая ошибка чтения источника в (year_code.clj: 32: 1).

EOF во время чтения, начиная со строки 12

Я что-то упустил или что-то не так с моим кодом?

1 Ответ

2 голосов
/ 20 февраля 2020

У вас есть некоторые проблемы с круглыми скобками в вашей функции yearCode. У вас есть дополнительные ( между defn и yearCode, а ваши последние два выражения if должны заключаться в квадратные скобки:

(defn yearCode [year]
    (if (= year "freshman") 1
        (if (= year "sophomore") 2
            (if (= year "junior") 3
                (if (= year "senior") 4 0)))))

Однако вы, вероятно, найдете использование case проще:

(defn yearCode [year]
  (case year
    "freshman" 1
    "sophomore" 2
    "junior" 3
    "senior" 4
    0))

или карта:

(def yearCodes
  {"freshman" 1
   "sophomore" 2
   "junior" 3
   "senior" 4})

(defn yearCode [year]
  (get yearCodes year 0))

Вы также должны использовать read-line вместо read в своей основной функции. read преобразует результат в форму замыкания, а read-lines возвращает строку напрямую.

(defn -main []
    (println "\n To find your year:") 
    (print "enter your year: ") (flush) 
    (let 
    [year (read-line)]
      (print "\n your year is ") 
      (print (yearCode year))
      (print "\n\n")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...