0
영화에 대한 등급 목록이 있습니다. 새 사용자가 영화를 평가하면 목록에 추가됩니다. 그러나 기존 사용자가 이미 등급을 매긴 경우 다시 평가하면 이전 등급이 새 등급으로 변경됩니다. 이건 내 지금까지 코드 :목록에서 요소를 제거하고 새 값으로 바꿉니다.
rateFilm :: String -> String -> Int -> [Film] -> [Rating]
rateFilm _ _ _ [] = []
rateFilm user title number (x:xs) = if title == name then do
if user == existingUser then do
removeItem (user,number) ratings
ratings ++ [(user,number)]
else do
ratings ++ [(user,number)]
else do
rateFilm user title number xs
where (name, director, year, ratings) = x
(existingUser,score) = getUser user ratings
removeItem :: Rating -> [Rating] -> [Rating]
removeItem _ [] = []
removeItem x (y:ys) | x == y = removeItem x ys
| otherwise = y : removeItem x ys
그리고 영화에 대한 정보는이있다 :
[("Blade Runner","Ridley Scott",1982,[("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4)]),
("The Fly","David Cronenberg",1986,[("Megan",4),("Fred",7),("Chris",5),("Ian",0),("Amy",5)]),
("Psycho","Alfred Hitchcock",1960,[("Bill",4),("Jo",4),("Garry",8),("Kevin",7),("Olga",8),("Liz",10),("Ian",9)]),
("Body Of Lies","Ridley Scott",2008,[("Sam",3),("Neal",7),("Kevin",2),("Chris",5),("Olga",6)])]
새로운 사용자가 등급을 추가하면이 괜찮 출력은 다음과 같이 될 것이다 :
기존의 사용자가 작업을 수행 할 때rateFilm "Alex" "Blade Runner" 8 testDatabase1
[("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Alex",8)]
그러나,이 상황이 발생합니다
rateFilm "Amy" "Blade Runner" 8 testDatabase1
[("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Amy",8),
("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Amy",8),
("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Amy",8),
("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Amy",8),
("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Amy",8),
("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Amy",8),
("Amy",6),("Bill",9),("Ian",7),("Kevin",9),("Emma",4),("Sam",5),("Megan",4),("Amy",8)]
이유에 대한 아이디어 및/또는 해결 방법은 무엇입니까? 매우 감사.
, 사용자 == existingUser)', [그렇게] (https://gist.github.com/bheklilr/08b4ffbfcf6bbfa34af0). – bheklilr
감사합니다. 매우 유용합니다. 훨씬 좋은 코드를 찾고 있습니다. :) – AlexJonBarry