Kinx v0.22.0 미리보기 출시

12445 단어 rubyjavascriptkinx
모두들 안녕!

Kinx v0.22.0 프리뷰 릴리즈를 공개했습니다! Release PageKinx를 봐 주세요

소개



버전 0.22.0에서는 파이프라인/구성 연산자와 일부 기능 메서드를 새로 지원했습니다.
  • 참고
  • 첫 번째 동기 ...
  • Kinx, 나는 C 계열의 구문을 가진 스크립팅 언어를 원했습니다.

  • 리포지토리 ... https://github.com/Kray-G/kinx
  • pull 요청을 기다리고 있습니다.



  • v0.21.0에서 주로 4가지 업데이트가 있습니다.
  • Pipeline Operator
  • Function Composition Operator
  • Functional Library
  • Clipboard

  • 파이프라인 운영자



    이것은 JavaScript의 제안을 기반으로 합니다. a |> bb(a) 와 정확히 동일함을 의미합니다. 마찬가지로 a <| b를 의미하는 a(b)도 사용 가능합니다.

    다음은 파이프라인의 간단한 예입니다.

    function doubleSay(str) {
        return "%{str}, %{str}";
    }
    function capitalize(str) {
        return str.toUpper(0, 1);
    }
    function exclaim(str) {
        return str + '!';
    }
    
    var result = exclaim(capitalize(doubleSay("hello")));
    System.println(result); // => "Hello, hello!"
    
    var result = "hello"
      |> doubleSay
      |> capitalize
      |> exclaim;
    
    System.println(result); // => "Hello, hello!"
    


    자세한 내용은 Pipeline Operator을 참조하십시오.

    함수 합성 연산자



    기능은 새로운 기능으로 합성될 수 있습니다. a +> b{ => b(a(_1)) }를 의미합니다. 그리고 a <+ b{ => a(b(_1)) }를 의미합니다.

    Kinx 함수 구문에 익숙하지 않은 사람들을 위해 구문에 대해 조금 알려 드리겠습니다. { => b(a(_1)) }는 JavaScript와 같은 구문에서 function(arg) { return b(a(arg)); }를 의미합니다. 예, _1는 첫 번째 인수입니다.

    다음은 함수 합성 연산자의 간단한 예입니다.

    function doubleSay(str) {
        return "%{str}, %{str}";
    }
    function capitalize(str) {
        return str.toUpper(0, 1);
    }
    function exclaim(str) {
        return str + '!';
    }
    
    var result = exclaim(capitalize(doubleSay("hello")));
    System.println(result); // => "Hello, hello!"
    
    // Generates a new composed function.
    var doubleSayThenCapitalizeThenExclaim
       = doubleSay +> capitalize +> exclaim;
    
    var result = "hello" |> doubleSayThenCapitalizeThenExclaim;
    System.println(result); // => "Hello, hello!"
    


    자세한 내용은 Function Composition Operator을 참조하십시오.

    기능 라이브러리


    Functional는 함수형 메서드를 다루는 전역 인스턴스입니다. 일반적으로 파이프라인에서 어떤 객체의 메소드를 사용할 때는 다음과 같은 예와 같이 해야 합니다.

    obj |> { &(obj) => obj.map({ => _1 * 2 }) }
        |> { &(obj) => obj.method() }
        |> // ... and so on.
    

    Functional 인스턴스는 실제 함수 개체를 래핑하고 파이프라인으로 전달합니다.

    예를 들어 위의 예에 대해 다음과 같이 작성할 수 있습니다.

    obj |> Functional.map { => _1 * 2 }
        |> Functional.method()
            // Note that it needs a `()` to use an actual function object
            // which receives an object at a first argument.
        |> // ... and so on.
    

    Enumerable는 파이프라인에서도 유용합니다. Enumerablemodule 뿐만 아니라 a pipeline 에서 유용한 기능적 열거 가능한 메서드를 가진 전역 인스턴스입니다.
    예를 들어 파이프라인을 통해 다음 함수에 여러 값을 전달할 때 Enumerable의 메서드는 값을 하나씩 가져와 다음 함수에 순서대로 전달할 수 있습니다.

    따라서 Enumerable는 무한 시퀀스를 처리할 수 있습니다. 이것은 아래의 예입니다.

    1..
        |> Functional.enumerable
        |> Enumerable.drop(10)
        |> Enumerable.filter { => _1 % 3 == 0 }
        |> Enumerable.take(10)
        |> Enumerable.toArray
        |> System.println;
    

    Functional.enumerableEnumerable 메서드에서 사용할 수 있는 항목을 순서대로 변경하는 매직 함수입니다.

    자세한 내용은 Functional을 참조하십시오.

    클립보드



    클립보드 읽기/쓰기가 지원됩니다. 다음은 클립보드 읽기/쓰기의 간단한 사용법입니다.

    var cb = new Clipboard();
    cb.write(str);
    var r = cb.read();
    


    자세한 내용은 Clipboard을 참조하십시오.

    결론



    새로운 기능 구현을 중단하고 Kinx를 곧 v1.0.0으로 만들 예정입니다. 지금 열심히 발매중입니다!

    Kinx 의 사용자가 되기를 바랍니다.

    감사합니다.

    좋은 웹페이지 즐겨찾기