Kotlin 일

13490 단어 AndroidKotlinJava
SLP KBIT Advent Calendar 2017 12/17(Sun)의 글입니다.

입문


저는 향천대학교 학생프로그래밍연구소 SLP학부 3학년 Nya-chan(itakumi)입니다.
최근 자신의 마음속에 Kotlin 열풍이 불고 있다. 1, 2학년 학생들도 흥미를 느낄 수 있도록 모두가 잘 알고 있는 자바에 비해 Kotlin은 어떤 맛이 있을까.
이 달력의 유일무이한 Kotlin.
가끔은 전혀 수준이 높지 않은 언어 소개 기사를 보면서 마음을 치유하세요.

우선, Kotlin


우선 구체적인 문법을 말하기 전에 Kotlin이 무엇인지 말하는 사람도 있을 것 같다.
Kotlin은 JetBrains사의 안드리 브레슬라프, 도미트리 제메로프가 개발한 정적 유형의 대상 언어다.
로고는 밑에 그거예요.

이 Jet Brains사는 IntelliJ IDEA, Ruby Mine 등 프로그래밍 언어 개발 환경을 개발하는 회사로 유명하다.
Kotlin은 JetBrains사의 경험을 바탕으로 자바 언어를 개량하여 더욱 간결하고 안전하게 한다.
따라서 Kotlin은 자바 가상 머신(나중에 JVM이라고 부른다)에서 실행되는 이른바 JVM계 언어이다.
어제 회색곰이 쓴 Scala도 JVM 언어입니다.
아, 최초의 설명은 이렇습니다. 다음은 구체적인 문법을 보고 싶습니다.

문법 정보


Hello World


여러분이 처음 프로그램 언어를 접했을 때 가장 먼저 만든 프로그램은 무엇입니까???
그래!!헬로월드야.
위쪽은 Java의 HelloWorld 프로그램, 아래쪽은 Kotlin입니다.
HelloWorld.java
public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, world!");
  }
}
HelloWorld.kt
fun main(args: Array<String>) {
    println("Hello, world!")
}
뭐?초단!!!
네, Kotlin이 짧아요.근데 자바는 길어요.
Java에 비해 Kotlin은 상당히 유창하게 쓸 수 있다.
문장의 끝에는 분호가 필요 없다.
Jet Brains 회사 분들도 번호를 많이 잊어버리시나요??
클래스의 쓰기도 fun 함수 이름 (변수 이름: 유형 이름) 등으로 정의할 수 있습니다.
System.out.println도 println만 있으면 돼요!!

변수 처리 방법


다음은 변수입니다.기본적으로 이런 문법이다.
val num = 10    // val だと変更不可
var i = 10      // var だと変更可能
i = 20
또한 유형을 명확하게 지정하고자 할 때
val str: String = "熱盛"    // 失礼しました熱盛と出てしまいました
에서 설명한 대로 해당 매개변수의 값을 수정합니다.
처음에는 val과 var가 섞일 수 있지만 익숙해지면 문제가 없습니다.
글쎄, 기본적인 문법은 잘 쓸 수 있지만 길어지니까 다른 관심 있으면 조사해 보세요.

Nullable


그렇다면 자바보다 문법 따위가 간단하고 이해하기 쉽다. 그뿐인가?그래서 자바는 없지만 Kotlin의 것도 소개해 드리겠습니다.
자바에서 무슨 개발을 하는 사람들은 꼭 만나게 되는 Null Pointer Exception.
자주 듣는 놈이야.
Kotlin은 Null Pointer Exception을 없애기 위한 운동 (거짓말) 을 가지고 있다.
Kotlin은 특수한 유형의'빈'을 통해서만 빈을 대입할 수 있습니다.
이것은 빈 점 Exception을 방지할 수 있습니다.
구체적인 작법은 다음과 같다.
// 普通のString型はnullを代入できない
var str1: String = "ばなな"
str1 = null    // コンパイルエラー
val len1 = str1.length    // これは大丈夫。str1は絶対にnullを代入できないのでヌルポにはならない

// Nullableにしてみた
var str2: String? = "バジリスクタイム"
str2 = null    // コンパイルエラーにならない
val len2 = str2.length    // コンパイルエラー!! ヌルポになっちゃう--って言われる

// こんな書き方もできる
val len2 = str2?.length    // こうするとnullじゃなければ実行、そうじゃなければnullを返す
val len2 = b?.length ?: -1    // エルビス演算子でnullによる条件分岐も簡単にできる
이걸 사용하면 Kotlin이 누르파를 방지할 수 있지만, 지금은 Kotlin만 실행하는 시스템이 매우 적다.
기본적으로 기존 자바에서 만든 시스템에 기능을 추가할 때 Kotlin을 사용하는 느낌이다.
그래서 Kotlin에 썼다고 하지만 자바와 관련이 있으면 누르보가 일어난다.
Kotlin으로 썼기 때문에 누르보가 없는 것은 아니니 주의하세요.

뭔가 해보세요.


이전에 만든 Android 초시계 프로그램의 코드를 노출합니다.
대상을 대상으로 하는 스팸 코드는 전혀 고려하지 않았다.
앞으로 신경 쓰이면 어디에 있을지 자세히 설명...

class MainActivity : AppCompatActivity() {

    val handler = Handler()
    var timeValue = 0


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val timeText = findViewById<TextView>(R.id.timeText)
        val startButton = findViewById<Button>(R.id.start)
        val stopButton = findViewById<Button>(R.id.stop)
        val resetButton = findViewById<Button>(R.id.reset)

        val runnable = object : Runnable {
            override fun run() {
                timeValue++

                timeToText(timeValue)?.let {
                    timeText.text = it
                }
                handler.postDelayed(this, 1000)
            }
        }

        startButton.setOnClickListener {
            handler.post(runnable)
        }

        stopButton.setOnClickListener {
            handler.removeCallbacks(runnable)
        }

        resetButton.setOnClickListener {
            handler.removeCallbacks(runnable)
            timeValue = 0
            timeToText()?.let {
                timeText.text = it
            }
        }
    }


    private fun timeToText(time: Int = 0): String? {
        return if (time < 0) {
            null
        } else if (time == 0) {
            "00:00:00"
        } else {
            val h = time / 3600
            val m = time % 3600 / 60
            val s = time % 60
            "%1$02d:%2$02d:%3$02d".format(h, m, s)
        }
    }
}

와--움직였어--!!!

총결산


이번에 Kotlin에 대한 기사를 썼는데 자신도 공부가 필요해요.
나는 모르는 일을 많이 조사했다.
관심 있는 사람 같이 공부하자!!
아쿠아 팬미팅 기대합니다!!
후쿠오카 가서 막장!!만투루

잡담


최신 Android Studio에'Include Kotlin support'가 추가되어 기쁩니다.
처음의 준비는 수월해진다.

좋은 웹페이지 즐겨찾기