CoffeeScript 튜토리얼에서 "Splats"는 무엇을 의미합니까?
이 CoffeeScript 자습서를 보면 : http://jashkenas.github.com/coffee-script/
Splats가 무엇인지 잘 모르겠습니다. 이 건축은 무엇입니까? (역사적으로) 어디서 왔습니까?
"splat operator"라는 용어는 Ruby에서 왔으며, *
문자 ( "splat"이라고도 함- 전문 용어 항목 참조 )는 인수 목록의 항목이 인수 목록을 "잠그어야"함을 나타내는 데 사용됩니다.
커피 스크립트는 초기 (참조 루비 스타일의 표시가 채택 문제 16 ), 그러나 더글러스 크록 포드의 제안에, 구문이 변경되었습니다 *x
에 x...
(참조 나중에 몇 주 문제 45 ). 그럼에도 불구하고 CoffeeScripters는 여전히 "splat"또는 "splat operator"라는 구문을 참조합니다.
그들이 실제로하는 일에 대해, splats arguments
는 splatted 인수가 모든 "extra"인수의 배열이되도록 오브젝트를 슬라이스합니다 . 가장 사소한 예는
(args...) ->
이 경우 args
단순히의 배열 사본이 arguments
됩니다. 스 플래트 인수는 표준 인수 전, 후 또는 사이에 올 수 있습니다.
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
처음 두 경우에 함수가 0-1 개의 인수를 받으면 rest
빈 배열이됩니다. 마지막 경우, 함수는 rest
비어 있지 않도록 두 개 이상의 인수를 받아야 합니다.
JavaScript는 이름이 같은 함수 (C 및 Java와 같은)에 대해 여러 서명을 허용하지 않기 때문에 스 플랫은 다양한 수의 인수를 처리하는 데 시간을 절약 해줍니다.
파이썬을 알고 있다면 함수 매개 변수를 목록으로 취급 할 수 있기 때문에 args...
대략 비슷 *args
합니다.
예를 들면 다음과 같습니다.
concat = (args...) -> args.join(', ')
concat('hello', 'world') == 'hello, world'
concat('ready', 'set', 'go!') == 'ready, set, go!'
어설 션에서도 작동합니다.
[first, rest...] = [1, 2, 3, 4]
first == 1
rest == [2, 3, 4]
스 플랫은 ...
var-args (가변 인수를 취하는 함수)에 연산자를 사용하는 용어입니다 .
자바 스크립트의 인수 객체에 대한 구문 설탕이라고 생각합니다.
아이디어는 ruby의 splat operator*
형태 일 수 있습니다 .
참고 URL : https://stackoverflow.com/questions/6201657/what-does-splats-mean-in-the-coffeescript-tutorial
'program tip' 카테고리의 다른 글
전 세계 모든 주소에 공통 주소 데이터베이스 디자인이 있습니까? (0) | 2020.07.25 |
---|---|
Android에서 버튼을 동적으로 추가하는 방법은 무엇입니까? (0) | 2020.07.25 |
shebang과 함께 awk에 여러 인수를 사용하는 방법 (예 : #!)? (0) | 2020.07.25 |
dict를 OrderedDict로 변환 (0) | 2020.07.25 |
INNER JOIN으로 SQL 삭제 (0) | 2020.07.25 |