programing

PowerShell에 캐스팅.이상한 구문

bestprogram 2023. 9. 19. 21:20

PowerShell에 캐스팅.이상한 구문

파일에서 변수로 XML을 읽는 작업은 다음과 같이 수행할 수 있습니다.

[xml]$x = Get-Content myxml.xml

하지만 왜 안 됩니까?

$x = [xml]Get-Content myxml.xml

다음과 같은 의미가 있습니다.

Unexpected token 'Get-Content' in expression or statement.
At line:1 char:20
+ $x=[xml]get-content <<<<  myxml.xml
    + CategoryInfo          : ParserError: (get-content:String) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

즉, 등호 좌측에 캐스트 작업이 이루어지는 이유는 무엇입니까?일반적으로 프로그래밍 언어에서 캐스팅은 Java와 같이 오른쪽에서 이루어집니다.

a = (String)myobject;
$x = [xml](Get-Content myxml.xml)

PowerShell에서는 모든 것이 개체입니다.그것은 cmdlet을 포함합니다.주조는 한 개체 유형을 다른 개체 유형으로 변환하는 과정입니다.

이것이 캐스팅에 의미하는 바는 수학에서처럼 불필요한 괄호를 추가하여 정확히 무슨 일이 일어나고 있는지를 스스로 설명하는 데 도움을 줄 수 있다는 것입니다.수학에서,1 + 2 + 3될 수 있습니다((1 + 2) + 3)뜻을 바꾸지 않고

PowerShell의 경우 다음 개체(오른쪽)에 대해 주조가 수행되므로,$x = [xml] get-content myxml.xml된다$x = ([xml] (get-content)) myxml.xml. 이것은 당신이 cmdlet을 casting하려고 하는 것을 보여줍니다.xml허용되지 않는 개체입니다.

분명히 이것은 당신이 하려는 것이 아니기 때문에, 당신은 먼저 cmdlet을 실행한 , AKA를 캐스팅해야 합니다.$x = [xml] (get-content myxml.xml). 다른 방법으로는[xml] $x = get-content myxml.xml, 는 변수를 다음과 같은 유형으로 선언하고 있습니다.xml할당된 것(등호의 오른쪽 전체라고 함)은 다음으로 캐스트됩니다.xml.

언급URL : https://stackoverflow.com/questions/11685265/casting-in-powershell-weird-syntax