거꾸로 바라본 세상
[Kotlin] 2. 연산자
Language/Kotlin 2023. 8. 22. 10:07

연산자 구분 단항 연산자(Unary Operator) : 항이 하나인 연산자로 하나의 변수에서만 작동하는 연산자 이항 연산자(Binary Operator) : 두 개의 항을 처리하는 연산자로 두 변수의 값으로 작동하는 연산자 사칙연산자 표현식 메서드명 내부 실행 a + b plus a.plus(b) a -b minus a.minus(b) a * b times a.times(b) a / b div a.div(b) a % b rem/mod a.rem(b), a.mod(b) println("num1 + num2 = ${num1 + num2}") println("num1 - num2 = ${num1 - num2}") println("num1 * num2 = ${num1 * num2}") println("num1..

[Kotlin] 1.변수(Variable)
Language/Kotlin 2023. 8. 21. 16:05

1. 변수선언 val (불변변수) : 한번 저장하면 다시 할당 할 수 없는 변수를 정의. //문자, 문자열, 논리 값 객체 //Char(2byte), String class, Boolean : (true, false) val charVal = 'a' val strVal = "Hello" val boolVal = true; //charVal = 'b' // Error: 불변변수는 다시 재할당 불가능. println(charVal); println(strVal); println(boolVal); println(charArrayOf('가','나').contentToString()) var str = String(charArrayOf('가','을')); println(str); //문자열 탬플릿 //$변수명, ..

[TypeScript] 인터페이스
Language/TypeScript 2023. 8. 7. 08:29

인터페이스 구문 interface Book { //?를 이용한 선택적 속성(undefined 허용) author?: string; pages: number; } const ok: Book = { author: 'Devide', pages: 365 } const missing: Book = { pages: 80 } 읽기전용 속성(readonly) readonly는 interface에서만 사용 interface Page { readonly text: string; } function read(page: Page) { console.log(page.text); //Cannot assign to 'text' because it is a read-only property. page.text = '10'; 함수와 ..

[TypeScript] 함수, 배열
Language/TypeScript 2023. 8. 7. 08:27

함수 매개변수에 변수 타입 선언 function sing(song: string) { console.log(`Singing: ${song}!`); } sing('hhh'); 자바스크립트의 경우 2개의 매개변수에 값을 한 개만 넣을 경우 undefined로 출력하지만 타입스크립트에서는 에러를 표기한다. function SingTwo(first: string, second: string) { console.log(`first: ${first} / ${second}`); } SingTwo('h111', 'h222'); SingTwo('h111'); //error 만약 선택적 매개변수를 이용하려면 변수명 뒤에 ?를 추가하면 매개변수를 1개만 넣어도 된다. function SingTwo(first: string,..

[TypeScript] 타입시스템, 유니언과 리터럴
Language/TypeScript 2023. 8. 7. 08:26

1.타입시스템 타입스크립트는 자바스크립트의 7가지 원시타입과 동일 null; //null undefined; //undefined boolean; //true or false string; //”Hello” number; //1233 bigint; //1233n symbol; //Symbol(”Hello”) 타입 시스템은 프로그램에서 가질 수 있는 타입을 이해하는 방법에 대한 규칙 코드를 읽고 존재하는 모든 타입과 값을 이해 각 값이 초기선언에서 가질 수 있는 타입을 확인 각 값이 추후 코드에서 어떻게 사용될 수 있는지 모든 방법을 확인 값의 사용법이 타입과 일치하지 않으면 사용자에게 오류를 표시 타입스크립트 타입 오류 종류 구문 오류 : 타입스크립트가 자바스크립트로 변환되는 것을 차단한 경우 let l..

[RxJava] buffer
Language/Java 2023. 4. 26. 09:39

buffer buffer는 말 그대로 버퍼에 담아서 통지를 하는 것. import io.reactivex.Flowable; import java.util.concurrent.TimeUnit; public class Buffer { public static void main(String[] args) throws Exception { Flowable.interval(100L, TimeUnit.MILLISECONDS) .take(12) //12건통지 .buffer(3) //3개씩 모아서 통지 .subscribe(data -> System.out.println(data)); Thread.sleep(4000L); } }

[RxJava] concatMap / concatMapDelayError
Language/Java 2023. 4. 26. 09:38

concatMap / concatMapDelayError 받을 데이터를 Flowable/Observable로 변환하여 Flowable/Observable을 하나씩 순서대로 실행하여 데이터를 통지한다. flatMap 메서드와 다르게 데이터를 받는 순서대로 Flowable/Observable을 생성하여 하나 씩 실행한다. 여러 데이터를 받더라도 첫번 째 데이터로 생성한 Flowable/Observable의 실행이 완료되지 않으면 다음 데이터를 만든 Flowable/Observable의 데이터는 통지되지 않는다. 또한 호출하는 스레드와 별도의 스레드에서 실행되더라도 데이터를 받을 때 바로 실행되지 않으므로 데이터를 받는 순서대로 처리하는 것은 보장하지만, 처리성능에는 영향을 줄 수 있다. concatMap은 ..

[RxJava] flatMap
Language/Java 2023. 4. 26. 09:37

flatMap map 과 마찬가지로 원본 데이터를 변환하여 통지하는 연산자이다. 다만 map 메서드와 달리 여러 데이터가 담긴 Flowable/Observable을 반환하여 데이터 한 개로 여러 데이터를 통지할 수 있다. 또한 Flowable/Observable을 반환해 특정 데이터를 통지하지 않거나 여러 Flowable/Observable을 반환해 에러를 통지할 수 있다. flatMap-1 : 원본 타임라인에서 데이터를 받을 때마다 Flowable/Observable을 생성하고 결과 데이터를 통지한다.(생성한 Flowable/Observable이 다른 스레드에서 수행되면 통지 데이터는 비동기로 생성) flatMap-2 : 원본 통지 타임라인에서 데이터를 받아 Flowable/Observable을 생성한..

[RxJava] map
Language/Java 2023. 4. 26. 09:37

map 원본 Flowable/Observable에서 통지하는 데이터를 변환한 후 데이터를 통지하는 연산자로 flatMap과 달리 한 개의 데이터로 여러 데이터를 생성하여 통지하거나 데이터 통지를 건너뛸 수 없다. 데이터를 받으면 반드시 null이 아닌 데이터 하나를 반환해야 한다. Flowable/Observable의 메서드 //map method public final Flowable map(Function

[RxJava] never
Language/Java 2023. 4. 26. 09:36

never 아무것도 통지하지 않은 Flowable/Observable을 생성하는 연산자로, 완료도 통지하지 않는다. empty는 완료를 통지하지만 never는 아무것도 통지하지 않는다. [소스코드] public class Main { public static void main(String[] args) throws Exception { never(); } static void never() throws Exception { Flowable.never().subscribe(new PrintSubscriber()); } } [Subscribe 코드] import io.reactivex.subscribers.DisposableSubscriber; public class PrintSubscriber extend..