2014-05-22 1 views
0

나는 신용 카드가 luhn 알고리즘을 사용하여 유효한지 확인하는 작업 코드를했다 그것이 작동하지 않습니다Ruby 드라이버 테스트는

card_1 = CreditCard.new(4563960122001999) 
card_2 = CreditCard.new(4563960122001991) 
p card_1.check_card 
p card_2.check_card 

을 나는 코드로 장난 있었고, 나는 드라이버 코드는 내가이하는 경우에 작동하는 것으로 나타났습니다 :

card_1 = CreditCard.new(4563960122001999) 
p card_1.check_card 
card_2 = CreditCard.new(4563960122001991) 
p card_2.check_card 

왜 이런 일이 일어나고 있는지 게시하기 전에 조사를 시도했습니다. 논리적으로, 왜 첫 번째 드라이버 코드가 작동하지 않는지 나는 알지 못합니다. 누군가 이것이 왜 일어나고 있는지에 관해 나를 도와 줄 수 있습니까?

미리 감사드립니다.

답변

1

으로 시작하는 클래스 변수를 사용하고 있으며이 클래스는 모든 인스턴스 (예 : CreditCard)와 클래스 (및 기타 관련 클래스)에서 공유됩니다. 따라서 새 인스턴스를 만들 때마다 값을 덮어 쓰거나 어떤 인스턴스에 check_card을 적용합니다. 첫 번째 예제에서 클래스 변수는 메서드의 마지막 응용 프로그램에 대한 결과를 보유하므로 마지막 인스턴스 (card_2)에 대한 결과를 반영합니다.

+0

설명 주셔서 감사합니다. 말된다. 문제를 해결하기 위해 클래스 변수를 인스턴스 변수로 변경합니다. – junjun

관련 문제