![추가 `dict` 매개변수 정의 없이 내 dict 메소드가 제대로 작동하는 이유는 무엇입니까? [정력]](https://linux55.com/image/70956/%EC%B6%94%EA%B0%80%20%60dict%60%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%EC%A0%95%EC%9D%98%20%EC%97%86%EC%9D%B4%20%EB%82%B4%20dict%20%EB%A9%94%EC%86%8C%EB%93%9C%EA%B0%80%20%EC%A0%9C%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EC%A0%95%EB%A0%A5%5D.png)
내 코드는 다음과 같습니다
: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
속성이 있습니다.