목록전체 글 (70)
hyeals study
[LoginActivity.kt] - 앞서 만들었던 로그인 화면에 로그인 기능 추가 firebase에 연결해서 사용자를 추가할 수 있게 함 계정 생성 및 로그인은 이메일과 패스워드를 통해 수행되도록 함 로그인이 완료되면 다음 엑티비티인 MainActivity로 넘어가게 함 package com.example.hyealsinstargram import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth...
[activity_login.xml] RelativeLayout: 부모 뷰와 자식 뷰 간의 관계에 따라서 배치할 수 있는 방법 TextInputLayout: EditText에 입력된 텍스트를 기반으로 뷰가 유동적으로 반응하기 위한 레이아웃 - match_parent: 해당 레이아웃을 가지는 컨테이너의 길이를 모두 채우는 것 - wrap_content: 해당 뷰가 그려질 수 있게 필요한 길이만 사용하는 것 - 1일차에는 아무 기능 없이 로그인 화면만 만들어 놓은 상태. 따로 필요한 리소스들은 인프런 "하울의 안드로이드 인스타그램 클론 만들기" 강의에서 찾을 수 있음
* 코틀린의 제네릭은 기본 개념은 자바와 아주 유사함. * 제네릭을 사용하면 타입 파라미터를 받는 타입을 정의할 수 있음. * 제네릭 타입의 인스턴스를 만들려면 타입 파라미터를 구체적인 타입 인자(type argument)로 치환해야 함. [제네릭 함수 & 프로퍼티] * 제네릭 함수를 호출할 때는 반드시 구체적 타입으로 타입 인자를 넘겨야 함. fun List.slice(indices: IntRange): List 위의 코드는 제네릭 함수인 slice에 대한 정의임 이를 참고해서 제네릭 함수를 호출하는 방법은 아래와 같음 위의 코드에서 두 호출의 결과 타입은 모두 List임. 컴파일러는 반환 탕비 List의 T를 알아서 추론한 Char로 치환함 [제네릭 클래스 선언] * 자바와 마찬가지로 코틀린에서도 타..
* 고차 함수(high order function): 어떤 함수를 인자로 받거나 함수를 반환하는 함수 ☞ 고차 함수는 람다 or 함수 참조를 인자로 넘길 수 있고, 람다 or 함수 참조를 반환하는 함수임. ex) "list.filter { x > 0 }" 이 코드의 filter함수는 표준 라이브러리에 있는 함수인데 술어 함수를 인자로 받기 때문에 고차 함수임(filter외에도 map, with 등 코틀린 표준 라이브러리가 제공하는 여러 고차 함수가 존재) [함수 타입] ※ 함수 타입 정의 방법 (Int, String) -> Unit 위와 같이 정의하면 됨 (Int, String)은 함수의 파라미터 타입이며, Unit은 함수의 반환 타입임. 함수 타입을 선언할 때는 반환 타입을 반드시 명시해야 하기 때문에..
[동등성 연산자] * 코틀린에서는 == 연산자 호출을 equals 메소드 호출로 컴파일함 ( != 연산자도 equals 호출로 컴파일됨) * ==과 !=은 내부에서 인자가 널인지 검사하고 널이 아닌 경우에만 a.equals(b) 연산자를 호출함 ☞ 따라서 "a==b"는 "a?.equals(b) ?: ( b == null)" 로 컴파일됨 * equals 메소드는 Any에 정의된 메소드이기 때문에 override가 필요함. 따라서 equals앞에 operator가 붙지 않아도 됨 [순서 연산자] * 비교 연산자(>, =,
* 관례(convention): 어떤 언어 기능과 미리 정해진 이름의 함수를 연결해주는 기법. ☞ ex) 어떤 클래스 안에 plus라는 특별한 메소드를 전의하면 그 클래스의 인스턴스에 대해 + 연산자를 사용할 수 있음 * 코틀린에서 관례를 사용하는 가장 단순한 예시가 산술연산자임. [이항 산술 연산 오버로딩] - 이 포스팅에서 사용하는 Point 클래스는 화명 상의 점을 표현하는 클래스임 plus 연산자 함수: 두 점의 x 좌표와 y 좌표를 각각 더하는 함수. (멤버 함수) operator 키워드: 연산자를 오버로딩하는 함수 앞에는 반드시 operator 키워드를 붙여야 함. (operator 키워드를 붙임으로써 어떤 함수가 관례를 따르는 함수임을 명확히 할 수 있음) ☞ 이처럼 operator 변경자를..
* 코틀린에서는 자바와 다르게 원시타입과 래퍼 타입을 구분하지 않음. [원시 타입(primitive type)] - 원시 타입: 이 타입의 변수에는 값이 직접 들어감. ex) int 등 - 참조 타입(reference type): 이 타입의 변수에는 메모리상의 객체 위치가 들어감. ex) String 등 * 자바의 경우에는 참조 타입이 필요한 경우 특별한 래퍼 타입으로 원시 타입의 값을 감싸서 사용함. ☞ 하지만 코틀린에서는 원시 타입과 래퍼 타입을 구분하지 않고 항상 같은 타입을 사용함. ※ 원시 타입 종류 정리 정수 타입: Byte, Short, Int, Long 부동 소수점 수 타입: Float, Double 문자 타입: Char 불리언 타입: Boolean [널이 될 수 있는 원시 타입] * 널 ..
※ 코틀린의 타입 시스템(type system)은 자바와 비교해서 코드의 가독성을 향상시키는데 도움을 주는 몇 가지 특성이 있음. 널이 될 수 있는 타입(nullable type) 읽기 전용 컬렉션 배열 지원 [널 가능성(nullability)] : NullPointerException오류를 피할 수 있게 도움을 주는 코틀린 타입 시스템을 특성 ☞ 널이 될 수 있는지의 여부를 타입 시스템에 추가함으로써 컴파일러가 컴파일 시 오류를 미리 감지해서 실행 시점에 발생할 수 있는 예외 가능성을 줄일 수 있음. [널이 될 수 있는 타입] * 코틀린과 자바의 가장 중요한 차이: 코틀린 타입 시스템이 널이 될 수 있는 타입을 명시적으로 지원하는 것. * 널이 될 수 있는 타입: 어떤 프로퍼티나 변수에 null을 허용..