논리 연산자 또는 조건 중첩
오늘 아침 루비 드릴에 대한 질문에 새로운 발견이 있어서 여기에 기록합니다.
문제.
두 개의 소문자가 있는 문자열이 존재할 때 그 중 한 문자열이 다른 문자열의 어미에 있는 경우
True
출력False
을 정의하는 방법입니다.slice 방법(with range)
공식 참조로 슬라이스 방법에서 범위를 지정할 수 있다는 것을 알았습니다.
"abcdefg".slice(0..2)
# >> abc
"abcdefg".slice(3..-1)
# >> defg
이 방법을 사용하여 문제를 정의하는 방법.나의 답안
def slice_range(x, y)
if x.length >= y.length
if x.slice(- y.length..-1) == y
puts "True"
else
puts "False"
end
else
if x == y.slice(- x.length..-1)
puts "True"
else
puts "False"
end
end
end
먼저 x와 y의 문자열의 길이를 조건 표현식에 곱한다.그런 다음 길이를 긴 부분에서 짧은 부분까지 슬라이스하여 중첩합니다.아나운서
더 간결한 작법이 있다.
def end_other(x, y)
if y.slice(-x.length..- 1) == x || x.slice(- y.length..- 1) == x
puts "True"
else
puts "False"
end
end
자신의 대답에 이렇게 쓰지 않은 것은 슬라이스의 범위 지정이 좋지 않다고 생각했기 때문이다.논리 연산자로 분리된 조건식 중 하나는 정상적으로 처리되지만 다른 하나는 오류가 발생한 것이 아닙니까?
그런 거 없어요.
코드를 다시 써서 검증하다.
def end_other(x, y)
puts y.slice(-x.length..- 1)
puts y.slice(-x.length..- 1)
if y.slice(-x.length..- 1) == x || y.slice(-x.length..- 1) == x
puts "True"
else
puts "False"
end
end
end_other('xyabc', 'abc')
출력은 다음과 같다. #空値です
abc
True
짧은 쪽이 긴 length로 절단할 때 오류가 아니라nil
.이것
nil == x
덕분에 처리가 순조롭게 진행될 수 있었다.고마워요 고마워요
이번 대답에서 나는 조건의 불일치에서 빈 값을 피하지 않아도 코드를 간결하게 쓸 수 있다는 것을 배웠다.
앞으로 실패를 두려워하지 않고nil에 삽입된 인코딩에 적극적으로 도전하세요!
Reference
이 문제에 관하여(논리 연산자 또는 조건 중첩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/swata_dev/articles/88879cc841a9fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)