class Animal { void speak() {} }
class Dog extends Animal { void speak() { System.out.println("멍멍!"); } }(x) -> x+1, 메서드 레퍼런스 String::length, 생성자 레퍼런스 ArrayList::new List<Integer> nums = Arrays.asList(1, 2, 3);
nums.stream().map(x -> x + 1).forEach(System.out::println);map, filter, reduce 등) int sum = nums.stream().filter(x -> x > 1).reduce(0, Integer::sum);class), 상속(extends), 캡슐화(ES6 private 필드) class Animal { speak() {} }
class Dog extends Animal { speak() { console.log("멍멍!"); } }x => x+1, 고차 함수(map, filter, reduce) [1, 2, 3].map(x => x + 1);map, filter, reduce), Promise, async/await const sum = [1, 2, 3].reduce((a, b) => a + b, 0);class Animal { public: virtual void speak() = 0; };
class Dog : public Animal { public: void speak() override { std::cout << "멍멍!"; } };[&](int x){ return x + 1; }, 함수 객체(functor) std::vector<int> v{1, 2, 3};
std::for_each(v.begin(), v.end(), [](int x) { std::cout << x + 1; });std::for_each, std::transform, std::accumulate) int sum = std::accumulate(v.begin(), v.end(), 0);객체지향: 클래스, 상속, 다형성
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("멍멍!")
함수형: 람다식 lambda x: x+1, 고차 함수(map, filter, reduce)
list(map(lambda x: x + 1, [1, 2, 3]))
선언형: 리스트 컴프리헨션, 제너레이터
sum([x for x in [1, 2, 3] if x > 1])