커리잉 언제 써요?
7307 단어 JavaScripttech
커리잉이 뭐야?
쉽게 말하면 커리잉은 여러 개의 매개 변수를 받아들이는 함수(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")
면 connection
는 server
에서 되돌아오는 다른 함수일 뿐이다.서버에 아직 접속되지 않았습니다.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 을 사용하여 얻은 이점을 다음과 같이 요약합니다.
Reference
이 문제에 관하여(커리잉 언제 써요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/maktub_bros/articles/28dc997137a92a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)