커리잉 언제 써요?

7307 단어 JavaScripttech
이번에는 JS의 옷장(Closure)을 활용한 커링(Curryng)의 사용 예에 대해 이야기하고 싶다.

커리잉이 뭐야?


쉽게 말하면 커리잉은 여러 개의 매개 변수를 받아들이는 함수(function, 언어에 따라 다른 방법)를 한 매개 변수를 받아들이는 여러 함수를 차례로 사용하는 형식으로 처리한다.
예를 들어 doAction("とんかつ", 5, true)로 대체doAction("とんかつ")(5)(true).

왜 사용합니까?


하지만 커리닝을 사용하는 이유는 무엇입니까? 커리링은 가끔 유용할 수 있습니다.나는 간단한 예를 하나 들었다.직사각형 면적을 구하는 함수는 다음과 같습니다.
const volume = (a, b, c) => a * b * c
함수를 Currying으로 구현한 경우
const volume = a => b => c => a * b * c
사용 시 volume(10)(5)(8)처럼 사용할 수 있으나 여러 가지 방법으로 다시 사용할 수 있다.
예컨대
const area = volume(1)
이런 느낌1을 첫 번째 매개 변수로 전달하면 사각형 면적area을 계산하는 함수로 재사용할 수 있다.그리고 이거area도 똑같아요.
const doubleValue = area(2)
이렇게 하면 상대방에게 맡긴 Number를 두 배doubleValue로 함수로 재사용할 수 있다.
예)doubleValue(10)//1*2*10=20
다음은 Curryng을 사용한 예입니다.커리잉을 사용하면 현재 필요한 정보만 얻을 수 있고 함수의 실제 실행 시간은 마지막으로 정보를 입력하는 시간으로 늦출 수 있습니다.코드는 다음과 같습니다.
const server = address => loginInfo => サーバ接続情報
const connection = server("http://server-address")connectionserver에서 되돌아오는 다른 함수일 뿐이다.서버에 아직 접속되지 않았습니다.connection({"username": "user1", "password": "pw1234"}) 이후 서버 연결이 시작되었습니다.
로그인 정보를 제공하지 않은 상태에서 접속할 이유가 없고, 서버 접속에 대한 정보는 미리 준비할 수 있기 때문에 준비된 상태에서 로그인 정보를 제공하면 사용하는 것이다.
좀 더 앞으로 가세요.
const server = address => loginInfo => {
  // サーバ接続後
  const loginToken = //
  return request => {
    // loginTokenを使ってサーバに特定のrequestを求めるコード
  }
}

const connection = server("server-address")
 
const request = connection({"username": "user1", "password": "pw1234"})
 
const request2 = connection({"username": "user2", "password": "1234pw"})
위에서 말한 바와 같이 같은 connection에서 각각 Request 함수를 만들어서 각 사용자에게 사용할 수 있다. 새로운 함수는 되돌아오는 형식이기 때문에 서로 간섭하지 않고 login Token을 가진다.따라서 Request를 사용할 때 login 정보를 다시 보낼 필요가 없고 login Token은 각자의 Request에 서로 다른 형식으로 존재하기 때문에 안전하다.
커링을 사용하면 마지막으로 요청한 집행을 마지막으로 필요한 정보를 얻을 때까지 미루는 등 다양한 방법으로 활용할 수 있다는 것이다.여기의 예도 없고server도 없고connection재활용request만 하려는 경우 다음과 같이 사용할 수 있다.
const request = server("server-address")({"username": "user1", "password": "pw1234"});

총결산


Currying 을 사용하여 얻은 이점을 다음과 같이 요약합니다.
  • 가능한 함수 매개 변수
  • 함수의 실행은 마지막 인자가 나올 때까지 미리 지연될 수 있다
  • 특정 값을 고정하는 동시에 함수를 재사용할 수 있음
  • 좋은 웹페이지 즐겨찾기