Program Tip

함수 인수를 사용한 메서드 체인

programtip 2020. 11. 17. 21:02
반응형

함수 인수를 사용한 메서드 체인


CoffeeScript에서 메서드를 연결하는 가장 좋은 방법은 무엇입니까? 예를 들어,이 JavaScript가 있다면 CoffeeScript로 어떻게 작성할 수 있습니까?

var req = $.get('foo.htm')
  .success(function( response ){
    // do something
    // ...
  })
  .error(function(){
    // do something
    // ...
  });

최신 CoffeeScript를 사용 하여 다음을 수행합니다.

req = $.get 'foo.html'
  .success (response) ->
    do_something()
  .error (response) ->
    do_something()

... 컴파일 :

var req;
req = $.get('foo.html').success(function(response) {
  return do_something();
}).error(function(response) {
  return do_something();
});

취할 수있는 두 가지 접근 방식이 있습니다. CoffeeScript에 대한 최고의 "문자 그대로"번역은 (제 생각에는)

req = $.get('foo.htm')
  .success((response) ->
    # do something
  )
  .error( ->
    # do something
  )

다른 방법은 인라인 함수를 "outline"으로 옮기는 것입니다. 이는 Jeremy Ashkenas (CoffeeScript의 제작자)가 일반적으로 중요하지 않은 함수 인수에 선호하는 스타일입니다.

onSuccess = (response) ->
  # doSomething

onError = ->
  # doSomething

req = $.get('foo.htm').success(onSuccess).error(onError)

후자의 접근 방식은 successerror콜백이 여러 줄일 때 더 읽기 쉽습니다 . 전자는 1-2 라이너 만 있으면 좋습니다.


때때로 연결하는 것보다 괄호를 적게 사용하는 것을 선호하므로 Trevor의 마지막 예제를 수정합니다.

req = $.get 'foo.htm'
req.success (response) -> # do something
req.error -> # do something

Coffeescript 1.7부터 연결이 상당히 단순화되었으며 여기에 언급 된 괄호 관련 해결 방법이 필요하지 않습니다. 이제 위의 예를 다음과 같이 작성할 수 있습니다.

req = $.get 'foo.htm'
.success ( response ) ->
  alert "success"
.error ->
  alert "error"

컴파일되는

var req;

req = $.get('foo.htm').success(function(response) {
  return alert("success");
}).error(function() {
  return alert("error");
});

https://gist.github.com/aseemk/8637896 에서이 기능과 기타 CS 1.7 기능에 대한 설명을 볼 수 있습니다.

참고 URL : https://stackoverflow.com/questions/5144191/method-chaining-with-function-arguments

반응형