함수가 처리 된 후에 사용하려는 일부 변수를 만드는 함수를 사용하고 있습니다. 직접 액세스하려고 시도했지만 시도 할 수 없습니다. 이 일을 어떻게 하죠?함수가 실행 된 후에 함수 내에서 생성 된 변수에 액세스
답변
함수가 실행 된 후에도 함수 내부의 변수가 유지되지 않습니다. 함수가 처리 된 후에 액세스하려면 범위 수정자를 접두어로 붙입니다. 자세한 내용은 콘솔에서
PS> function test-var{ $script:var='foo' }
PS> test-var # excute the function
PS> $var #print var
foo
유형이 : 셰이는 지적
PS> Get-Help about_Scopes
대단히 감사합니다! – Sune
당신은 높은 수준의 범위에서 사용할 수 있습니다 기능 범위 내 전역 변수이라는 것을 만들 수 있습니다. 그러나 전역 변수는 일반적으로 좋은 생각이 아니므로 몇 가지 대안을 제안하고 싶습니다. 그들은 일반적으로 그들의 이 아닌 지역의 정밀 나쁜 관행으로 간주됩니다
:
이
은 위키 피 디아 global variable 페이지입니다 그들이 보호 된 메모리에 상주하지 않는 전역 변수가 잠재적으로 어디서나 (에서 수정할 수 있습니다 그렇지 않으면 은 읽기 전용으로 렌더링 됨), 프로그램의 모든 부분은 그것에 의존 할 수 있습니다. [1] 따라서 전역 변수는 상호 종속성을 만들 수있는 무한한 가능성이 있으며 상호 종속성을 추가하면 복잡성이 증가합니다. 복잡성.
일부 대안 :
- 함수 반환에게 호출자가 필요 데이터를 확인합니다. Powershell 함수는 일반적으로 Powershell 함수의 명사와 관련된 데이터를 반환해야합니다. naming convention 동사-Noun. 명사와 관련이없는 다른 데이터를 반환해야하는 경우 두 번째 기능을 고려하십시오.
function Get-Directories { param ([string] $Path) # Code to get or create objects here. $dirs = Get-ChildItem -Path $Path | where {$_.PsIsContainer} # Explicitly return data to the caller. return $dirs } $myDirs = Get-Directories -Path 'C:\'
reference variable을 사용하십시오. 참조는 메모리에있는 변수의 주소를 함수로 전달합니다. 함수가 변수의 데이터를 변경하면 함수 외부에서 액세스 할 수 있지만 변수의 범위는 변경되지 않습니다. 이 도움이
function Get-Directories { param ([string] $Path, [ref] $Directories) $Directories.Value = Get-ChildItem -Path $Path | where {$_.PsIsContainer} } $myDirs = $null Get-Directories -Path 'C:\' -Directories ([ref] $myDirs)
희망. 해피 코딩 :-)
thourough 답변 주셔서 감사합니다! – Sune
함께 기능을 실행하면. 함수가 범위에서 실행되고 함수 내에 정의 된 모든 변수를 호출자가 사용할 수있게됩니다.
즉
. $func
$myPrivateVariable # Now Set in the parent scope.
함수가 모듈에있는 경우, 당신은 또한 모듈의 범위에 액세스 할 트릭의이 종류를 사용할 수 있습니다 :이
감사합니다! 그런데 왜 그 앞에 달러 기호를 사용하여 함수를 실행합니까? 변수처럼? – Sune
샘플이기 때문에 :-)이 방법으로도 명령을 처리 할 수 있습니다. 나는. $ a = Get-Command Get-Command; & $ a 또는 ScriptBlock : $ a = {$ b = 1}; . $ a; $ b –
- 1. 다른 함수가 JQuery에서 실행 된 후로드 함수
- 2. 호출 된 함수의 콜백에서 함수 변수에 액세스
- 3. 동적으로 생성 된 컨트롤 내에서 컨트롤에 액세스
- 4. 변수로 선언 된 함수 내에서 변수에 액세스하는 방법은 무엇입니까?
- 5. 출력 : 함수 대 변수에 할당 된 함수
- 6. jQuery - 다른 함수가 실행 된 후에 만 함수를 실행하십시오.
- 7. 생성 된 어셈블러 인라인 실행
- 8. 생성 된 HTML을 변수에 저장하십시오.
- 9. 보기가 실행 된 후에 코드 실행
- 10. 는 usort 함수 내에서 전역 변수에 액세스 할 수 없습니까?
- 11. jQuery에서 중첩 된 함수 내에서 함수 호출
- 12. 업로드 된 모든 파일이 삭제 된 후에 Uploadify의 함수가 호출됩니까?
- 13. 위의 함수가 완료된 후에 함수 호출이 완료되었습니다.
- 14. 컨트롤러에서 생성 된 뷰의 변수에 어떻게 액세스 할 수 있습니까?
- 15. ruby에서 문자열로 명명 된 매개 변수에 액세스
- 16. 반환 된 함수 내에서 전역 변수에 액세스 할 수없는 이유 $ .post - jquery?
- 17. 실행 함수 내에서 선언 된 QPainter가 이슈를 생성합니다.
- 18. 함수 내에서 정의 된 javascript 변수가 함수 내에서 '정의되지 않음'입니다.
- 19. 매트릭스 함수 내에서 액세스
- 20. .css 함수가 핸들러 함수 내에서 작동하지 않습니다.
- 21. 어떻게 함수 내에서 변수를 액세스 할 수
- 22. 메서드 내에서 프로그래밍 방식으로 생성 된 UIButton의 속성에 액세스
- 23. NSJSONSerialization에서 생성 된 NSDictionary 내에서 JSON 데이터에 액세스
- 24. 액세스 오버로드 된 템플릿 함수
- 25. jQuery에서 전역 변수에 액세스 할 수 없습니다. 함수 내에서 .get.
- 26. 2 초 후에 함수 실행
- 27. 생성 된 코 테스트 실행
- 28. PHP 함수가 반환됩니다. 중첩 된 함수
- 29. 함수 내에서 sqldatereader에서 데이터 액세스
- 30. Clojure에서 동적으로 바인딩 된 함수 실행
이 소스 코드를 공유 할 수 있도록 도와줍니다
희망? – rene