내 코드는 다음과 같습니다
:let ClassZ = {'author': "Juchen.Zeng"}
:function ClassZ.Print_author_name()
: echo self.author
:endfunction
:function ClassZ.Change_author_name(arg1)
: let self.author = a:arg1
:endfunction
:call ClassZ.Print_author_name()
Juchen.Zeng
:call ClassZ.Change_author_name('MarioLuisGarcia')
:call ClassZ.Print_author_name()
MarioLuisGarcia
vim의 공식 문서에는 다음과 같이 나와 있습니다.
:function uk2nl.translate(line) dict
: return join(map(split(a:line), 'get(self, v:val, "???")'))
:endfunction
먼저 시도해 보겠습니다.
:echo uk2nl.translate('three two five one')
drie twee ??? een
가장 먼저 눈에 띄는 특별한 점은 ":function" 줄 끝에 있는 "dict"입니다. 이는 함수가 사전에서 사용되는 것으로 표시합니다. 그러면 "self" 지역 변수가 해당 사전을 참조합니다.
추가 인수 없이 내 예에서 dict
자체 참조가 잘 작동하는 것처럼 보이는 이유는 무엇입니까 ? 이 dict
인수가 필수인가요?
답변1
이 경우 dict
함수를 직접 정의하고 이를 dict
함수의 사전 암시적 속성 에 할당하면 dict
속성을 사용할 필요가 없으므로 속성은 선택 사항입니다.
이러한 유형의 함수를 호출합니다.익명 또는 번호가 매겨진 함수.
ClassZ
귀하의 예에서는 두 개의 키를 정의 Change_author_name
하고 Print_author_name
값은 다음과 같습니다.폰 크레이프.
다음을 사용하여 확인할 수 있습니다.기능():
:function ClassZ.Print_author_name
function 394() dict
1 echo self.author
endfunction
보시다시피 a가 numbered-function - 394
생성되었으며 dict
속성이 있습니다.