JS 개발자의 Zig 첫인상

PHPz
풀어 주다: 2024-08-24 22:31:38
원래의
745명이 탐색했습니다.

Zig First Impressions from a JS Dev

저는 게임 개발 프로젝트를 위해 zig를 배워왔습니다. 여기에서 자세한 내용을 읽어보세요. 이것은 대부분 JS/TS의 최근 경험에서 나온 언어에 대한 나의 초기(대부분 긍정적인) 인상입니다.

오류 처리

오류는 가치입니다- 현재로서는 예외가 최선이 아니라는 것이 꽤 대중적인 의견입니다. 그들은 숨겨진 제어 흐름을 생성하며 JavaScript에서는 선언조차 할 수 없습니다. 그러면 애플리케이션이 훨씬 더 불안정해집니다.

Zig는 쉽고 재미있는 오류 처리를 위해 오류 열거형과 멋진 구문을 사용합니다. 예를 들면 :

으아아아

위 코드에서는 오류 MyError를 선언하고(별도로 수행할 수도 있음) 이를 반환합니다.
try는 다음과 같이 "오류가 반환되면 여기에 반환하세요"를 의미합니다.

으아아아

저는 이 접근 방식이 훌륭한 조합이며 Go land의 끝없는 if(err != nil)에서 우리를 구해 준다고 믿습니다.

기타 하이라이트:

  • 오류는 명시적이므로 모든 유형을 선언하고 처리해야 합니다
  • 블록 수준이 아닌 그 자리에서 바로 처리가 이루어집니다
  • 페이로드 캡처 덕분에 오류가 올바르게 입력되고 자동 완성되므로 스위치 표현식과 같은 것을 쉽게 사용할 수 있습니다.

!void 구문- ! 반환 유형과 오류 유형 간의 통합을 만드는 데 사용됩니다. Zig는 ! 앞에 오류를 추가하지 않는 것을 지원합니다. 이는 함수에서 실제로 반환하는 모든 오류의 통합을 생성하도록 되어 있습니다.

실제로는 이 구문이 도움이 되지 않습니다. 적어도 내 IDE 경험으로는 이 경우 어떤 지능도 얻지 못하며 이로 인해 기능이 덜 명확해집니다.무엇을 돌려받을지 말해주세요!
나는 이것이 main() 함수에서만 유용하다고 생각합니다.

페이로드 캡처

TS에서 숫자 | 한정되지 않은? if 또는 일부 논리를 사용하여 유형을 필요한 것으로 좁힐 수 있으며 TS는 자동으로 새 유형을 올바르게 표시합니다.
쉽지만 이 접근 방식에는 문제가 있습니다.

  • 함수 전체에서 유형이 변경될 수 있으면 따라가기가 더 어렵습니다
  • 어떤 경우에는 여전히 캐스트를 해야 합니다

Zig에서는 "페이로드 캡처"를 사용하여 이 작업을 수행합니다. 결과 유형으로 새로운 불변 변수를 생성할 수도 있습니다. 예를 들면:

으아아아

무슨 일이 일어나고 있는지 매우 분명합니다! 게다가 변수는 불변이지만정말로변경해야 하는 경우 대신 값에 대한 포인터를 캡처할 수 있습니다.

이 메커니즘은 for, switch, catch 등을 포함하여 언어 전반에 걸쳐 사용될 수 있다는 점도 언급할 가치가 있습니다.

Comptime 헛소리

물론 저는 아직 comptime의 모든 가능성을 파악하지 못했습니다. 그러나 간단히 말해서 컴파일 중에 일반 코드를 실행할 수 있습니다. 이 시간 동안에만 사용되는 전체 함수를 생성할 수 있으며 필요한 경우 컴파일 오류를 반환할 수 있습니다.

매우 유연한 언어이기 때문에 Zig에게 아주 잘 맞습니다. 유형도 값입니다. 즉, 유형에 대한 정보를 생성, 변경 및 얻을 수 있습니다(특히 comptime에서).

Zig Guide의 기본 예:

으아아아

편집자 경험

공식 Zig 플러그인(zls 사용)과 함께 VSCode를 사용하고 있습니다. 편집기에서 보는 인텔리센스와 오류는 아쉬운 점이 많습니다.

"검출 가능한 불법 행위"일명 컴파일 오류를 일으키는 불법적인 행위는 일반적으로 편집기에 표시되지 않습니다. 예를 들면:

으아아아

저는 0.14(dev) 마스터 브랜치 버전을 사용하고 있습니다. 제대로 작동하려면 댓글로 알려주세요!

위 내용은 JS 개발자의 Zig 첫인상의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!