저는 게임 개발 프로젝트를 위해 zig를 배워왔습니다. 여기에서 자세한 내용을 읽어보세요. 이것은 대부분 JS/TS의 최근 경험에서 나온 언어에 대한 나의 초기(대부분 긍정적인) 인상입니다.
오류는 가치입니다- 현재로서는 예외가 최선이 아니라는 것이 꽤 대중적인 의견입니다. 그들은 숨겨진 제어 흐름을 생성하며 JavaScript에서는 선언조차 할 수 없습니다. 그러면 애플리케이션이 훨씬 더 불안정해집니다.
Zig는 쉽고 재미있는 오류 처리를 위해 오류 열거형과 멋진 구문을 사용합니다. 예를 들면 :
위 코드에서는 오류 MyError를 선언하고(별도로 수행할 수도 있음) 이를 반환합니다.
try는 다음과 같이 "오류가 반환되면 여기에 반환하세요"를 의미합니다.
저는 이 접근 방식이 훌륭한 조합이며 Go land의 끝없는 if(err != nil)에서 우리를 구해 준다고 믿습니다.
기타 하이라이트:
!void 구문- ! 반환 유형과 오류 유형 간의 통합을 만드는 데 사용됩니다. Zig는 ! 앞에 오류를 추가하지 않는 것을 지원합니다. 이는 함수에서 실제로 반환하는 모든 오류의 통합을 생성하도록 되어 있습니다.
실제로는 이 구문이 도움이 되지 않습니다. 적어도 내 IDE 경험으로는 이 경우 어떤 지능도 얻지 못하며 이로 인해 기능이 덜 명확해집니다.무엇을 돌려받을지 말해주세요!
나는 이것이 main() 함수에서만 유용하다고 생각합니다.
TS에서 숫자 | 한정되지 않은? if 또는 일부 논리를 사용하여 유형을 필요한 것으로 좁힐 수 있으며 TS는 자동으로 새 유형을 올바르게 표시합니다.
쉽지만 이 접근 방식에는 문제가 있습니다.
Zig에서는 "페이로드 캡처"를 사용하여 이 작업을 수행합니다. 결과 유형으로 새로운 불변 변수를 생성할 수도 있습니다. 예를 들면:
무슨 일이 일어나고 있는지 매우 분명합니다! 게다가 변수는 불변이지만정말로변경해야 하는 경우 대신 값에 대한 포인터를 캡처할 수 있습니다.
이 메커니즘은 for, switch, catch 등을 포함하여 언어 전반에 걸쳐 사용될 수 있다는 점도 언급할 가치가 있습니다.
물론 저는 아직 comptime의 모든 가능성을 파악하지 못했습니다. 그러나 간단히 말해서 컴파일 중에 일반 코드를 실행할 수 있습니다. 이 시간 동안에만 사용되는 전체 함수를 생성할 수 있으며 필요한 경우 컴파일 오류를 반환할 수 있습니다.
매우 유연한 언어이기 때문에 Zig에게 아주 잘 맞습니다. 유형도 값입니다. 즉, 유형에 대한 정보를 생성, 변경 및 얻을 수 있습니다(특히 comptime에서).
Zig Guide의 기본 예:
공식 Zig 플러그인(zls 사용)과 함께 VSCode를 사용하고 있습니다. 편집기에서 보는 인텔리센스와 오류는 아쉬운 점이 많습니다.
"검출 가능한 불법 행위"일명 컴파일 오류를 일으키는 불법적인 행위는 일반적으로 편집기에 표시되지 않습니다. 예를 들면:
저는 0.14(dev) 마스터 브랜치 버전을 사용하고 있습니다. 제대로 작동하려면 댓글로 알려주세요!
위 내용은 JS 개발자의 Zig 첫인상의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!