나는 다음과 같은 두 가지 방법이 있습니다전달 변형 배열은 생산 "형식 불일치"오류
Sub Start()
Dim x As Dictionary
Set x = New Dictionary
Call x.Add("first", 1)
MsgBox TypeName(x.Items) 'Displays "Variant()"
Call Test(x.Items)
End Sub
Sub Test(withArray() As Variant)
End Sub
내 프로젝트는 위에서 사용 된 Dictionary
클래스를 제공하기 위해 "마이크로 소프트 런타임 스크립팅"을 참조한다.
유형 불일치 :
x.Items
이MsgBox TypeName(x.Items)
에 의해 입증으로Variant()
이 (내가Call Test(x.Items)
에 다음과 같은 컴파일 오류가있어 반환하는 사실에도 불구하고 배열 또는 사용자 정의 형식
예상 무엇이 잘못 ?
참고 :
Sub Test(withArray)
MsgBox TypeName(withArray)
End Sub
: 나는에
Test
방법을 변경하는 경우
성공하고 Variant()
을 표시합니다. 인수를 Variant()
유형으로 명시 적으로 선언 할 수없는 이유는 무엇입니까?
니스 질문 좋은 [힌트] (http://stackoverflow.com/questions/1537819/byref-and-byval-in-vbscript) @mehow. 나는 루틴이 호출된다는 것을 한눈에 알 수 있기 때문에 항상 '호출'을 사용합니다. 또한 인수 목록은 괄호로 묶어야하기 때문에 (괄호없이 많은 인수가있는 루틴을 호출하고 쉼표는 내 눈을 너무 이상하게 만듭니다.) 이제는 괄호 뒤에있는 이유를 모두 알았습니다. 감사합니다! – feelthhis
나는 위대한 질문과 훌륭한 대답에 동의합니다. 나는 2 일 만에이 현상금을 줄 것이다 –
예, 어디에서 @ mehow : –