E226: Type Parameter Shadows Type — 타입 파라미터가 기존 타입을 가려요
E226: Type Parameter Shadows Type — 타입 파라미터가 기존 타입을 가려요
타입 파라미터가 이미 스코프에 있는 타입을 가리면(shadow) 이 경고가 발생해요. 섀도잉은 코드를 읽기 어렵게 만들고, 참조하려던 타입을 숨길 수도 있어요. 이 경고는 그런 경우를 일찍 잡아줍니다.
이 경고는 -Wshadow:type-parameter-shadow 컴파일러 플래그로 켭니다.
본문
Example
class Outer:
trait D
def parse[D](in: D) = in
parse의 타입 파라미터 D가 Outer 안의 트레이트 D를 가려요.
Warning
-- [E226] Naming Warning: example.scala:3:12 -----------------------------------
3 | def parse[D](in: D) = in
| ^
| Type parameter D for method parse shadows the type defined by trait D
|-----------------------------------------------------------------------------
| Explanation (enabled by `-explain`)
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| A type parameter shadows another type that is already in scope.
| This can lead to confusion and potential errors.
| Consider renaming the type parameter to avoid the shadowing.
-----------------------------------------------------------------------------
Solution
기존 타입을 가리지 않도록 타입 파라미터의 이름을 바꾸세요.
class Outer:
trait D
def parse[D2](in: D2) = in