0
점검은 100 0보다 작거나 큰 정수 작동하지만 '허용되지 않는 문자열이'인텔에 할당되지 않는 이유를 누군가가 나에게 을 알 수 있습니까? 그것은 입니다2 레벨 루비 삼항 연산자가 작동하지
class Human
attr_accessor :intel, :agility, :strength
def initialize(intel, agility, strength)
intel.is_a?(String) ? intel = "string not allowed" : check_range(intel) ? @intel = "Invalid Stat for intel" : @intel = intel
check_range(agility) ? @agility = "Invalid Stat for agility" : @agility = agility
check_range(strength) ? @strength = "Invalid Stat for strength" : @strength = strength
end
def check_range(skill)
skill.to_f < 0 || skill.to_f > 100
end
rosetta = Human.new('twenty,26,39)
puts rosetta.intel, rosetta.agility, rosetta.strength
end
나는 이것이 삼항 조작 학대라고 말하고 싶습니다. 'if/elsif/else' 문으로 쓰면 문제가 명확 해집니다. – August
문자열을 인스턴스 변수에 할당하는 것은 오류를 나타내는 Ruby 방식이 아닙니다. 예외를 발생 시키거나 오리 - 타이핑 일을하고 필요한 것들에 응답하는 것을 점검해야합니다. – Max
질문에 직접 대답하지 않기 때문에 답변으로 게시하지 않지만 다음과 같은 코드를 리팩터링하십시오. https://gist.github.com/cheald/5ad0ca2c61413d26f22b –