본문 바로가기

전체 글104

Predicate란? Predicate는 수학적으로 주어진 조건을 만족하는지 아닌지를 테스트하는 함수나 표현식을 의미합니다. 프로그래밍 컨텍스트에서는 보통 어떤 값을 입력으로 받아 Boolean 값을 반환하는 함수를 가리킵니다. 키워드(예약어)는 아니지만 많이 통용되는 용어 입니다. 코틀린에서는 Predicate를 (T) -> Boolean 형태의 함수 타입으로 표현합니다. 여기서 T는 어떤 타입의 입력값이던 상관 없으며, 함수는 이 입력값이 어떤 조건을 만족하는지 (true) 아닌지 (false)를 반환합니다. 가상 시나리오 쇼핑몰 앱에서 특정 조건을 만족하는 상품들만을 필터링하여 보여주려고 합니다. 사용자는 다음과 같은 조건들로 상품들을 필터링할 수 있습니다: 가격이 10,000원 이하인 상품 별점이 4.5 이상인 상품 .. 2023. 8. 29.
코틀린의 `asSequence()` asSequence()는 코틀린의 컬렉션에 대해 호출할 수 있는 확장 함수입니다. 이 함수는 주어진 컬렉션을 시퀀스로 변환합니다. 시퀀스는 지연 계산(lazy evaluation)의 원칙을 따르는 데이터의 연속입니다. 이 원칙 때문에 asSequence()는 중간 연산을 즉시 실행하지 않고, 최종 연산이 호출될 때까지 지연시키게 됩니다. 즉시 계산 (Eager Evaluation) 즉시 계산은 표현식이 평가될 때 즉시 결과를 반환합니다. 일반적인 컬렉션 연산은 즉시 평가됩니다. 예를 들어, 리스트에 map과 filter를 연속으로 호출하면, map이 호출될 때마다 리스트의 모든 원소를 변경하고, 그 다음 filter가 호출될 때 변경된 리스트의 모든 원소를 검사합니다. 지연 계산 (Lazy Evaluat.. 2023. 8. 29.
코틀린 컬렉션 함수 Partition() 코틀린의 partition() 함수는 컬렉션에 존재하는 원소들을 주어진 조건에 따라 두 개의 컬렉션으로 나눕니다. 이 함수는 Pair 타입을 반환하며, 첫 번째 원소는 주어진 조건을 만족하는 원소들의 컬렉션, 두 번째 원소는 조건을 만족하지 않는 원소들의 컬렉션입니다. 예시 시나리오: 시나리오: 우리는 여러 학생들의 점수 목록을 가지고 있습니다. 점수가 50점 이상인 학생들과 그렇지 않은 학생들을 각각 다른 리스트로 분리하고 싶습니다. 예시 코드: fun main() { // 학생들의 점수 리스트 생성 val scores = listOf(45, 88, 39, 100, 76, 42, 90, 55) // partition() 함수를 사용하여 50점 이상과 미만으로 점수를 분리 val (passed, fail.. 2023. 8. 29.
Eval 함수와 보안 문제 컴퓨터과학에서 코드는 일련의 명령어로 구성되어 컴퓨터에게 특정 작업을 지시합니다. 일반적으로 코드는 개발자에 의해 미리 작성되며, 프로그램 실행 시에는 해당 코드만 수행됩니다. 그런데 프로그래밍 언어 중 일부에는 "실행 시점"에 동적으로 코드를 평가하고 실행하는 기능을 제공하는데, 이를 eval 함수라고 합니다. 1. Eval 함수란? Python과 JavaScript에서 eval은 문자열 형태의 코드를 받아 해당 코드를 실행하는 함수입니다. # Python 예시 x = 10 y = 20 result = eval("x + y") print(result) # 30 // JavaScript 예시 let x = 10; let y = 20; let result = eval("x + y"); console.log.. 2023. 8. 29.