Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

혼자 있고 싶네요. 모두 나가주세요.

[Kotlin]001. 기본 문법 후려치기 - 1 본문

타닥타닥/Kotlin Extention

[Kotlin]001. 기본 문법 후려치기 - 1

아무것도몰라양 2017. 9. 19. 21:59

참조 : https://try.kotlinlang.org

안녕 세계

fun main(args: Array<String>) {
    println("Hello, world!")
}

메서드 구조가 js처럼 간결한 것을 알 수 있다. 앞에 return 형이 없는 것을 보아 유연하게 return 가능한 모양.

args라는 이름의 String 배열을 파라메터로 가져오고, 제일 좋은건 콘솔 출력이 앞에 뭉텅이가 날아갔다. println 개꿀

귀찮았던 문자열 + 문자열 + .. + .....

fun main(args: Array<String>) {
    if (args.size == 0) {
        println("Please provide a name as a command-line argument")
        return
    }
    println("Hello, ${args[0]}!")
}

잠깐 이제보니 세미콜론(;)도 없다;; ㄷㄷㄷ

println("Hello, ${args[0]}!")

println("Hello, "+ args[0] + "!") 와 같은 동작을 한다.

제일 중요한 For

fun main(args: Array<String>) {
    for (name in args)
        println("Hello, $name!")
}

향상된 For문의 형식이다. args안의 name이라.. 정말 직관적이다. 게다가 와일드카드 $로 깔끔한 출력으로 화룡 정점.

추가

for (i in args.indices) 이렇게 사용하면 i가 증가하며 인덱스를 가리킨다.

성격 급한 사람을 위한 빠른 정의가 가능

fun main(args: Array<String>) {
    val language = if (args.size == 0) "EN" else args[0]
    println(when (language) {
        "EN" -> "Hello!"
        "FR" -> "Salut!"
        "IT" -> "Ciao!"
        else -> "Sorry, I can't greet you in $language yet"
    })
}

val language = if (args.size == 0) "EN" else args[0]

보통은 삼항연산자로 ((args.size == 0)? "EN" : args[0]) 표현 하였었다. 이 부분은 글쎄... 나는 삼항연산자의 ?가 너무 간결해서 더 좋다. 하지만 당장 두 번 이상의 비교가 필요하다면 if else로 짜는 편이 훨씬 좋을 듯 하다.

when구문은 VHDL에서 사용한 것과 매우 흡사하다. 역시 위의 if else처럼 아무곳이나 갖다 쓸 수 있는 듯 하고, default 치기 귀찮았는데 else로 간결해진 것이 마음에 든다. VHDL에서 처럼 병렬 연산의 의미는 없겠지

클래스 생성과 생성자

class Greeter(val name: String, var count: Int) {
 
    fun greet() {
        println("Hello, ${name} (${count})");
    }
}
 
fun main(args: Array<String>) {
    Greeter(args[0],0).greet()
    Greeter(args[0],1).greet()
}

val은 읽기 전용, var은 읽기/쓰기 가능한 변수를 의미한다.

Greeter라는 class는 멤버 변수에 관한 것이 하나도 없지만, 무려 class Greeter(val name: String, var count: Int)이 문장만으로 모든 것을 해결해 버렸다. main에서 Greeter(String, Int)로 객체를 생성하고 .greet.count로 변수에 접근할 수 있다.

만약 객체를 가지고 있고 싶다면 var temp = Greeter(args[0],0)와 같은 형식으로 가능 한 것을 확인하였으나, 이 방식이 맞는 것인지는 잘 모르겠다.

위의 코드는 아래의 코드와 동일하다.

private class Greeter(){
  public String name;
  public int count;
 
  public Greeter(String name, int count){
    this.name = name;
    this.count = count;
  }
 
  public void greet(){
    System.out.println("Hello, " + name + " (" + count + ")");
  }
}
 
...
 
int main(String[] args){
  Greeter greeter1 = new Greeter(args[0],0);
  greeter1.greet();
 
  Greeter greeter2 = new Greeter(args[0],1);
  greeter2.greet();
 
  return 1;
}
Comments