루프 이후에 nil을 반환하고 Ruby의 except 블록에서도 반환합니다.

Aug 18 2020

다음과 같은 작업 코드가 있습니다. 루프 nileachunless else아래 예제에서 더 좋은 방법이 있습니까?

def find_member(member_name)
  unless members.empty?
    members.each do |member|
      if member.name == member_name
        return member
      end
    end
    nil
  else
    nil
  end
end

nil이 메서드가 호출되는 다른 메서드에는 다른 조건이 있기 때문에 각 경우에 통과해야합니다 . 이것이 제가 위와 같이 코드를 작성한 이유입니다.

답변

5 D.SM Aug 18 2020 at 03:05

Ruby에는 detect메서드가 있으므로 전체 메서드를

members.detect { |member| member.name == member_name }

제쳐두고, each빈 배열에 대해 잘 작동하므로 empty?명시 적 루프를 유지하더라도 확인이 완전히 필요하지 않습니다.