분류 전체보기 (20) 썸네일형 리스트형 복습 parameter가 하나일 때는 it을 사용하면 된다. val introduce:String.(Int)->String={"my name ${this} age=${it}"} return name.introduce(age) 여러 개일 경우 parameter를 다 써줘야 한다. fun mymy(name:String,age:Int,date:String) : String { val introduce:String.(Int,String) -> String = { age1: Int, today: String -> "my name $this age = $age1 today = $today" } return name.introduce(age,date) } Object object가 다른 class와 다른 점 singleton pattern이다. object는 주생성자 부생성자 모두 사용할 수 없다 singleton pattern -객체는 한번만 만들어 지므로 공통된 객체를 여러 개 생성해서 사용해야 하는 상황에서 많이 사용된다. -장점- -코드어디에서나 접근 가능하다. -실행이 되어 클래스 파일을 읽어올 때 한 번만 객체를 생성하여 고정된 메모리 영역을 가져 불필요한 메모리 사용을 막는다 -단점- -클래스가 사용되지 않을 때도 메모리 상에 인스턴스가 올라가 있다.(메모리 누수 현상) -singleton 인스턴스가 많은 일을 하거나 데이터를 공유시킬 경우 다른 인스턴스와 결합도가 높아져 개방 폐쇄 원칙에 어긋난다. 수정이 어려워지고 테스트하기 어려워진다. -서버 환경에.. Companion Object companion object -자바의 static 대신 사용된다. -정적인 메소드나 정적인 변수를 선언할 때 사용한다. class Book private constructor(val id : Int, val name:String){ companion object Bookfactory : IdProvider { //companion object : Idprovider override fun getId() : Int { return 444 } val myBook = "new book" fun create()=Book(getId(), myBook) } } interface IdProvider{ fun getId() : Int } companion object가 하는 일 private property나 메소드.. data class pojo : 메소드가 작동을 하는 것이 아니라 비어 있는 틀 역할을 하는 클래스 data class 클래스이름 (변수,변수....) 변수는 class의 property처럼 사용. dataclass 도 init과 메소드 생성 가능 컴파일러가 자동으로toString(),hashCode(),equals(),copy()가 만들어진다. toString() : data class에서 toString() 메소드 사용 시 실제 값을 반환 equals() : 데이터가 같은지 비교 copy() : 값을 복사 hashcode() : 모르겠음...... dataclass는 class와 다르게 객체를 println 하면 객체의 내용이 보여진다 class는 메모리 주소값이 나온다. layout-2 LinearLayout LinearLayout (horizontal)을 사용하면 버튼들이 가로로 정렬되는 것을 볼 수 있고 LinearLayout (vertical)을 사용하면 버튼들이 세로로 정렬되는 것을 볼 수 있다. 아래의 코드처럼 LinearLayout안에 LinerarLayout을 넣어서 사용할 수 있다. FrameLayout FrameLayout은 가장 상위의 뷰만 보여주는 방식이다. 다른 뷰 들은 중첩하여 쌓은 후 각 뷰를 전환하여 보여준다. TableLayout -배열을 사용하여 화면 구성 TableLayout에 Table Row를 추가하고 Row에 button을 추가하여 사용하였다. MotionLayout -앱에서 모션과 위젯 애니메이션을 관리하는데 사용하는 레이아웃 -Constraint.. layout ConstraintLayout -디폴트 레이아웃 - 다른 요소와 어떻게 연결되는지가 중요하다 연결점을 부모 레이아웃이나 같은 레이아웃 안의 다른 위젯에 연결한다. 연결한 위젯의 위치를 옮기면 같이 움직인다. 위젯의 크기 설정 wrap_content 현재 뷰의 크기에 맞게 최대한 작게 만든다 아니면 값을 주어서 크기를 지정한다. visiblity의 종류 LinearLayout (horizontal) 가로 방향으로 차례대로 뷰를 추가한다. 뷰가 차지할 수 있는 영역을 할당. kotlin 자료형 생략 고민 kotlin 은 자료형을 생략할 수 있다. 이러한 생략을 할 수 있는데 어떤 형태로 코드를 입력하는 게 편할까?라는 고민을 하였다. 코드를 당장 입력할 때 편한 방법은 3번째 방법이 편하고 코드가 짧으면 헷갈리지 않겠지만 계속 공부를 하고 코드가 점점 길어지면 헷갈릴 것 같아서 2번째 방식이나 생략을 하지 않는 것이 더 도움이 될 거 같고 자료형이 어떤지 알아보기 쉬울 거 같다. Kotlin Study3 lamda 람다식은 value처럼 다룰 수 있는 익명 함수이다. 1) 메소드의 parameter로 넘겨줄 수 있다. 2) return 값으로 사용할 수가 있다. 첫 번째 square 코드처럼 앞에서 타입을 선언해주거나 두 번째 square처럼 뒤에 타입을 선언을 해주거나 한 곳에서는 타입을 선언해줘야 컴파일러에서 타입 추론이 가능하다 람다의 기본 정의 val lamdaname : Type = {argumentList -> codeBody} 확장 함수 람다식의 특징 it은 하나만 들어가는 input parameter를 가리킨다 이전 1 2 3 다음