Kinx v0.21.0 미리보기 출시
8481 단어 rubyjavascriptkinx
Kinx v0.21.0 프리뷰 릴리즈를 공개했습니다! Release Page의 Kinx를 봐 주세요
소개
버전 0.21.0에서는 패턴 일치, case-when 및 switch-when 구문에 의한 할당을 새로 지원했습니다.
패턴 매칭
패턴 매칭은 매우 유용합니다. 예를 들어 다음과 같은 선언에서 사용할 수 있습니다.
var [a, b, , ...c] = [1, 2, 3, 4, 5, 6];
var { x, y } = { x: 20, y: { a: 30, b: 300 } };
var { x: d, y: { a: e, b: 300 } } = { x: 20, y: { a: 30, b: 300 } };
System.println("a = ", a);
System.println("b = ", b);
System.println("c = ", c);
System.println("d = ", d);
System.println("e = ", e);
System.println("x = ", x);
System.println("y = ", y);
// => .y.b requires 300, but it is 3 in actual.
var { x: d, y: { a: e, b: 300 } } = { x: 20, y: { a: 30, b: 3 } };
마지막 경우에는 오른쪽이 왼쪽의 패턴과 일치하지 않습니다. 따라서
NoMatchingPatternException
예외가 표시됩니다.a = 1
b = 2
c = [4, 5, 6]
d = 20
e = 30
x = 20
y = {"a":30,"b":300}
Uncaught exception: No one catch the exception.
NoMatchingPatternException: Pattern not matched
Stack Trace Information:
at <main-block>(test.kx:14)
할당, 함수의 인수, case-when에서도 동일한 기능을 사용할 수 있습니다.
관련 기능에 대한 설명은 다음과 같습니다.
선언 ... https://github.com/Kray-G/kinx/blob/master/docs/spec/statement/declaration.md
할당 ... https://github.com/Kray-G/kinx/blob/master/docs/spec/statement/expression/assign.md
함수 인수 ... https://github.com/Kray-G/kinx/blob/master/docs/spec/definition/function.md
경우 - 때 ... https://github.com/Kray-G/kinx/blob/master/docs/spec/statement/expression/case_when.md
전환 시기
나는 fallthrough인
case-when
대신 fallthrough가 아닌 switch-case
를 만들고 싶다고 생각했습니다.하지만 성능에 문제가 있었습니다.
case-when
패턴 매칭으로 조건을 평가하도록 설계되었습니다. 이는 조건 평가 순서가 위에서부터 순차적임을 의미합니다. switch-case
는 조건을 평가하는 순서가 정의되어 있지 않습니다. 즉, if-else
로 변환되거나 이진 검색으로 변환되거나 테이블별로 점프로 변환됩니다. 특히, 테이블로 점프하는 것은 퍼포먼스의 포인트에서 중요하다. 따라서
switch-when
대신 switch-case
를 도입했습니다. when
레이블 대신 case
레이블을 사용할 수 있습니다. when
레이블을 사용하면 break
절의 마지막 문장 뒤에 when
문장이 자동으로 삽입됩니다.물론
else:
레이블 대신 default:
레이블을 사용할 수 있습니다. else:
레이블은 default:
와 break
를 의미합니다.when
에서 대체를 사용하려는 경우 fallthrough
의 마지막 문에서 when
키워드를 사용할 수도 있습니다.결론
가끔 '왜 switch-case에서 fallthrough를 선택하셨나요?'', '잘못된 선택이군요.''라는 반응을 받기도 했습니다. switch-when
그에 대한 답이 될 거라 생각합니다. Kinx의 약점 중 하나가 제거됩니다.
나는 당신이 Kinx의 사용자가 되어 이 언어로 무언가를 시도하기를 바랍니다. 어떤 피드백이든 환영합니다.
또 봐요!
Reference
이 문제에 관하여(Kinx v0.21.0 미리보기 출시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/krayg/kinx-v0-21-0-preview-released-n2d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Kinx v0.21.0 미리보기 출시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/krayg/kinx-v0-21-0-preview-released-n2d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)