Ruby에서 문자열을 뒤집을 수있는 두 가지 솔루션이 있습니다. 하나는 사실을 인쇄하고 다른 하나는 거짓을 인쇄하지만, 둘 다 내가 원하는 응답을 인쇄합니다.다른 인쇄물이 틀리면 한 솔루션이 사실을 인쇄하는 이유는 무엇입니까?
사실로 인쇄되는 해결책과 동일한 대답이 발생한다고해도 왜 틀리다고 말합니까?
def reverse(string)
new = ""
i = 0
length = string.length
while i < length do
new = new.to_s + string[-1, 1].to_s
string.chop!
if i >= string.length
break
end
end
puts new
end
def secondreverse(string)
new = ""
i = 0
length = string.length
while i < length do
new = string[i] + new
i += 1
end
return new
end
이 코드가 작동하는지 확인하는 테스트는 다음과 같습니다
는 솔루션 및 테스트입니다. 솔루션을 작성한 후에는 모두 사실을 인쇄해야합니다. 그냥new
을 반환해야 할 때
#reverse
기능에
puts("\nTests for #reverse")
puts("===============================================")
puts(
'secondreverse("abc") == "cba": ' + (secondreverse("abc") == "cba").to_s
)
puts(
'secondreverse("a") == "a": ' + (secondreverse("a") == "a").to_s
)
puts(
'secondreverse("") == "": ' + (secondreverse("") == "").to_s
)
puts("===============================================")
반환 값은 모두 'true'입니다. 너는 무엇을 얻 느냐? –
변수의 이름으로'new'를 사용하는 것은 정말 나쁜 생각입니다. 결국 미래의 자신을 포함하여 코드를 다루는 다른 사람을 혼란스럽게 할 것입니다. 일반적으로'new_str' 나 유비쿼터스'retval'과 같은 더 기술적 인 이름을 사용하십시오. 또한 new.to_s + string [-1, 1] .to_s'는 여분의 문자열에 CPU 시간을 낭비하는 두 개의'to_s '를 사용하고 있습니다. 'string [-1, 1]'은 어색하다. 'string [-1]'도 똑같은 일을 할 것입니다. –
또한주의하십시오. 첫 번째 방법은 전달 된 문자열을 무시하는 것입니다. 리터럴 문자열을 전달하는 것을 보지 못하지만 변수를 전달한 다음 나중에 확인하십시오. 결과적으로 이것이 의도적 인 것이라면 메소드 이름 끝에'!'를 사용해야합니다. –