as?

as? (안전한 형변환)

as?는 형변환을 안전하게 해주는 의사 메서드(pseudo-method)예요. 형이 맞지 않으면 예외(exception)를 던지는 as와 달리 nil을 돌려줘요. 또 포인터 타입과 다른 타입 사이의 형변환에는 쓸 수 없어요. 형이 불확실한 값을 다룰 때 아주 유용하죠.

출처: Crystal 공식 문서 — as?

본문

as? 의사 메서드는 as와 비슷하지만, 형이 맞지 않을 때 예외를 던지는 대신 nil을 돌려줘요. 그리고 포인터 타입과 다른 타입 사이의 형변환에는 사용할 수 없어요.

예시:

value = rand < 0.5 ? -3 : nil
result = value.as?(Int32) || 10

value.as?(Int32).try &.abs

더 알아보기