함수형 프로그래밍이란?
3789 단어 introfunctionaltutorialbeginners
함수형 프로그래밍은 자체 데이터(상태) 및 메서드에 대해 알고 있는 클래스 인스턴스와 같은 개체를 갖는 것이 아니라 함수 간에 데이터를 전달하는 것입니다.
다음은 함수형 프로그래밍에 대한 몇 가지 주요 아이디어입니다.
수업을 사용하지 않음
기능만.
C
또는 일부 최신 기능 언어와 같은 일부 언어에는 class
키워드가 없습니다.객체 지향 프로그래밍의 "문제"는 클래스로서의 "객체"가 아닙니다. 문제는 "지향성"입니다.
객체는 변경할 수 없습니다.
개체를 제자리에서 수정하는 대신 수정되는 새 개체를 만듭니다. 그런 다음 초기 개체 위에 씁니다.
문자열과 정수는 대부분의 언어에서 변경할 수 없습니다(이로 인해 해시 가능하므로 사전 키로 사용하기에 안전합니다). 따라서 값을 수정하려면 새 값을 만듭니다.
우리는 쓴다:
x = 0
x = x + 1
따라서 목록의 경우 다음과 같이 작성합니다.
x = [1, 2, 3]
x = append(x, 4)
x = sort(x)
increment = (i) => i + 1
x = map(increment, x)
코드는 절차적이기보다는 선언적입니다.
이렇게 하면 코드가 더 합리적이고 더 짧아지는 경우가 많습니다. 원하는 방식보다 원하는 방식으로 작성하기 때문입니다.
for
또는 while
루프가 없습니다.대신 재귀를 사용하십시오.
또는 다음과 같은 맵 변환:
# Ruby
myList.each
// JS
myList.map
# Python
map(fn, myList)
[x + 1 for x in myList] # Python list comprehension
적어도 Python에서는
for
루프를 사용할 때 도달할 수 없는 최적화된 C 코드를 사용하므로 해당 접근 방식을 사용하면 속도 이점을 얻을 수 있습니다.기능은 순수하다
함수에는 다른 객체의 상태를 수정하는 부작용이 없습니다.
데이터베이스, 디스크의 파일, API 또는 인쇄와 상호 작용하는 것과 같은 유용한 작업을 수행하려면 예외를 만들어야 합니다.
구성
코드를 재사용할 수 있습니다.
기능은 전문화되어 있으며 범위가 더 좁습니다.
기능을 함께 연결할 수도 있습니다.
코드는 단위 테스트를 작성하기 더 쉬워집니다. 함수는 사용자가 제공한 입력에만 기반하여 예측 가능한 출력을 제공합니다.
파일이나 데이터베이스 또는 API의 데이터와 상태가 없을 때 의존하지 않습니다. 이것은 일반적으로
car.start()
와 같은 OOP의 메소드에 의해 수정됩니다.연결
JavaScript의 함수형 프로그래밍에 대한 YouTube 동영상을 시청하세요. 처음 몇 개의 비디오는 내가 이미 알고 있었고 코드베이스에서 매일 찾을 수 있는 내용을 다룹니다. Reduced Advanced 및 Currying 비디오에서 상황이 정말 흥미로워지기 시작합니다.
Wikipedia의 Functional Programming 페이지를 참조하십시오.
튜토리얼 포인트Functional Programming도 참조하십시오.
Reference
이 문제에 관하여(함수형 프로그래밍이란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/michaelcurrin/what-is-functional-programming-o6m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)