이펙티브 코루틴을 요약한 내용입니다 연산자 오버로딩은 강력한 기능이지만 ‘큰 힘에는 큰 책임이 따른다’라는 말처럼 위험할 수 있음 연산자 오버로딩의 매력 fun Int.factorial(): Int = (1..this).product() fun Iterable.product(): Int = fold(1) { acc, i -> acc * i } Int 확장 함수로 정의되어 있으므로, 편리하게 사용할 수 있음 print(10 * 6.factorial()) // 7200 연산자 오버로딩을 활용하면 !기호로 팩토리얼을 표현할수 있음 이렇게 사용하면 안됨 operator fun Int.not() = factorial() print(10 * !6) // 7200 함수의 이름이 not이므로 논리 연산에 사용해야지, ..