728x90
반응형

저번 포스팅에서 다뤘던 스위프트의 속성을 사용해서 다양한 연산자(Operator)를 처리하는 방법에 대해 설명하고자 합니다.


연산자를 사용하면 값을 합치고, 변경하고, 검사 할 수 있습니다.

예를 들면 1 + 2처럼 +라는 연산자를 사용할 수 있고 &&를 사용해 Bool 값을 연산할 수 있습니다.


연산자는 단항, 이항, 삼항으로 분류 할 수 있습니다.


단항은 single target(-a), prefix operator(!b), postfix operator(c!)와 같은 것이 있습니다.

이항은 two targets(2 + 3)와 같은 것이 있습니다.

삼항은 three targets(a ? b : c)와 같은 것이 있습니다.


연산자에 영향을 주는 Value를 operand라고 부릅니다.

1 + 2에서 +는 binary operator이며 1과 2는 operand라고 말할 수 있습니다.



Assignment Operator

할당 연산자는 값을 초기화하거나 갱신하는 역할을 합니다.


let b = 10

var a = 5

a = b

// a is now equal to 10



Arithmetic Operators

스위프트는 4개의 Arithmetic Operator를 제공합니다.

- Addition +

- Subtraction -

- Multiplication *

- Division /


1 + 2       // equals 3

5 - 3       // equals 2

2 * 3       // equals 6

10.0 / 2.5  // equals 4.0


그리고 Addition Operator는 String를 합칠때 사용 할 수 있습니다.


var helloworld = "hello, " + "world"  // equals "hello, world"



Remainder Operator

나머지 연산자는 %를 사용하고 left value를 right value로 나누고 남은 나머지를 반환합니다.


9 % 4       // equals 1



Compound Assignment Operator

합성 할당 연산자는 Assignment와 이항연산자를 합친 연산자입니다.


var a = 1

a += 2

// a is now equal to 3


a += 2는 실제로 a = a + 2로 볼 수 있습니다.



Comparison Operators

비교 연산자는 6개가 있습니다.

- Equal to ==

- Not equal to !=

- Greater than >

- Less than <

- Greater than or equal to >=

- Less than or equal to <=


1 == 1   // true because 1 is equal to 1

2 != 1   // true because 2 is not equal to 1

2 > 1    // true because 2 is greater than 1

1 < 2    // true because 1 is less than 2

1 >= 1   // true because 1 is greater than or equal to 1

2 <= 1   // false because 2 is not less than or equal to 1



Ternary Conditional Operator

삼항 연산자는 if..else와 비슷합니다.

form은 question ? answer1 : answer2 의 형태입니다.

question이 true이면 answer1을, false이면 answer2를 반환합니다.


let contentHeight = 40

let hasHeader = true

let rowHeight = contentHeight + (hasHeader ? 50 : 20)

// rowHeight is equal to 90



Nil-Coalescing Operator

nil 결합 연산자는 Optional value가 값을 가지고 있는지 확인해서 값을 리턴하는 연산자 입니다.


a ?? b

a가 nil이 아니면 a를, nil이면 b를 반환합니다.

이 코드는 아래와 같이 나타낼 수 있습니다.


a != nil ? a! : b



Range Operators

범위 연산자는 3가지 종류가 있습니다.

- Closed Range Operator a...b

- Half-Open Range Operator a..<b

- One-Sided Ranges Operator a... / ...b



Logical Operators

논리 연산자는 operand가 Boolean인 것들의 Operator입니다.

- Logical Not !a

- Logical And a && b

- Logical OR a || b



728x90
반응형

'Language > Swift' 카테고리의 다른 글

(Swift) 스위프트 속성(Property)기초  (0) 2017.10.08
(Swift) 스위프트 맛보기  (0) 2017.10.07
728x90
반응형

스위프트는 정수형 타입인 Int와 실수형 타입인 Double, Float와 참과 거짓을 나타내는 Bool과 문자열을 나타내는 String의 데이터 타입이 있고 Collection 타입인 Array, Set, Dictionary도 제공합니다. 또한 Objective-C에서 제공하던 Tuple도 제공합니다. 그리고 새로 추가된 Optional을 제공합니다. Optional타입은 nil값을 저장 할 수 있습니다.


스위프트에서 데이터는 상수 또는 변수로 나타낼 수 있습니다. 상수는 let 키워드를 사용하고 변수는 var 키워드를 사용합니다.


let maximumNumberOfLoginAttempts = 10

var currentLoginAttempt = 0


이 코드는 아래와 같이 해석 할 수 있습니다.

maximumNumberOfLoginAttempts 상수를 선언 했고 10으로 초기화 했다.

currentLoginAttempt 변수를 선언 했고 0으로 초기화 했다.


그리고 한 줄에 여러개의 변수를 선언함과 동시에 초기화도 같이 할 수 있습니다.


var x = 0.0, y = 0.0, z = 0.0


만약에 우리가 변수를 선언하고 값을 초기화 하지 않으면 어떤 일이 발생할까요?


var x

이렇게 type annotation이 빠졌다고 에러를 보여주게 됩니다.


그럼 Type Annotation이란 무엇일까요?

Type Annotation은 변수나 상수의 이름 뒤에 "이것이 어떤 타입이다"라고 명시적으로 알려주는 것입니다.


var welcomeMessage: String

바로 이렇게 말이죠.


여기서 :은 of type라는 의미를 가지고 있습니다. welcomeMessage는 String type의 var라는 거죠.


Integer(정수)는 소수점이 없는 숫자를 나타낼 수 있습니다.

기본적으로 Int는 32비트 플랫폼에서는 Int32처럼 동작하고 64비트 플랫폼에서는 Int64처럼 동작합니다.

UInt는 unsigned int로 0이상의 자연수를 나타낼 수 있습니다. 다른말로 음수값은 가질 수 없는 거죠.

UInt도 Int와 마찬가지로 32비트, 64비트 플랫폼에 따라 UInt32, UInt64로 동작합니다.


실수는 Double과 Float로 나타낼 수 있습니다.

Double은 64비트 범위를 나타낼 수 있고 Float는 32비트 범위를 나타낼 수 있습니다.



정수는 Literal을 이용하면 2진수, 8진수, 16진수로 나타낼 수 있습니다.


let decimalInteger = 17

let binaryInteger = 0b10001       // 17 in binary notation

let octalInteger = 0o21           // 17 in octal notation

let hexadecimalInteger = 0x11     // 17 in hexadecimal notation


실수도 Literal을 이용해서 만들 수 있습니다.


let literalDecimal1 = 1.25e2    // 125

let literalDecimal2 = 1.25e-2   // 0.0125

let literalDecimal3 = 0xfp0     // 15

let literalDecimal4 = 0xfp2     // 60

let literalDecimal5 = 0xfp-2    // 3.75


e는 10^이고 p는 2^ 입니다.

1번은 1.25 * 10^2

2번은 1.25 * 10^-2

3번은 15 * 2^0

4번은 15 * 2^2

5번은 15 * 2^-2


튜플은 여러개의 값을 그룹화 시킬 수 있습니다.

예를 들어서 HTTP status code인 404는 "Not Found" 입니다.

이것은 (404, "Not Found")라고 튜플형태로 만들 수 있습니다.


let http404Error = (404, "Not Found")


이것을 사용하기 위해서는

1.

let (statusCode, statusMessage) = http404Error

print("The status code is \(statusCode)")

// Prints "The status code is 404"

print("The status message is \(statusMessage)")

// Prints "The status message is Not Found


2.

let (justTheStatusCode, _) = http404Error

print("The status code is \(justTheStatusCode)")

// Prints "The status code is 404


3. 

print("The status code is \(http404Error.0)")

// Prints "The status code is 404"

print("The status message is \(http404Error.1)")

// Prints "The status message is Not Found


4.

let http200Status = (statusCode: 200, description: "OK")

print("The status code is \(http200Status.statusCode)")

// Prints "The status code is 200"

print("The status message is \(http200Status.description)")

// Prints "The status message is OK


이런식으로 사용 할 수 있습니다.


튜플을 사용하게 되면 함수에서 여러개의 값을 한번에 리턴 시킬 수 있습니다.


Optional은 C나 Objective-C에서는 없던 개념입니다.

이것은 값의 부재를 나타냅니다. 다른 말로 값이 있던지, 값이 없던지 입니다.

값이 있는 것은 정수형에서는 0이나 19로 나타내는 것이고 값이 없다는 것은 nil로 값을 설정해주는 것입니다.


var serverResponseCode: Int? = 404

// serverResponseCode contains an actual Int value of 404

serverResponseCode = nil

// serverResponseCode now contains no value


Optional은 타입뒤에 ?를 붙여줍니다.

serverResponseCode는 Optional Int타입이며 404 값으로 초기화 되었습니다.

그 다음에 nil로 값을 비워줬습니다.


nil은 Optional 타입이 아닌 변수에 설정 할 수 없습니다.

Optional 타입의 변수에 값을 초기화 해주지 않으면 스위프트는 자동으로 nil값으로 초기화 해줍니다.


728x90
반응형

'Language > Swift' 카테고리의 다른 글

(Swift) 스위프트 연산자(Operator) 기초  (0) 2017.10.09
(Swift) 스위프트 맛보기  (0) 2017.10.07
728x90
반응형

예전에 Objective-C언어를 사용해서 iOS, MacOS위에서 동작하는 앱을 개발했습니다.


그리고 2014년 6월 2일 WWDC를 통해 스위프트가 소개되었고 그 이후로 스위프트를 통해 많은 앱들이 개발 되었습니다.


스위프트를 사용해 개발하기 위해서는 MacOS기반 개발환경이 필요하고 XCode가 설치되어있어야 합니다.


그리고 playground에서 스위프트를 사용해서 코드를 작성하면 결과를 즉시 확인 할 수 있습니다.



이렇게 말이죠.


앞으로의 포스팅에서는 스위프트언어에 대해서 알아보고 아이폰 개발에 대해 알아보겠습니다.


제가 참고하는 자료는 The Swift Programming Language (Swift 4) 입니다.


728x90
반응형

'Language > Swift' 카테고리의 다른 글

(Swift) 스위프트 연산자(Operator) 기초  (0) 2017.10.09
(Swift) 스위프트 속성(Property)기초  (0) 2017.10.08
728x90
반응형

이전 글에서 흐름제어에 대해 알아보았습니다.


이번에는 흐름제어에서 반복문을 좀 더 유연하게 사용할 수 있게 하는 break와 continue에 대해 알아보겠습니다.


먼저 간단하게 개념에 대해 이야기하겠습니다.

break는 멈춘다는 의미로 가장 가까이에 있는 반복문을 멈추고 밖으로 나가는 명령어입니다.

continue는 계속한다는 의미로 반복문의 한 사이클을 중간에 멈추고 다음 사이클을 실행하라는 명령어입니다.


간단한 예로 시작 하겠습니다.

for (i in 1..3) {
for (j in 1..3) {
println("${i} * ${j} = ${i * j}")
}
}


i가 1부터 3까지 반복하면서

j가 1부터 3까지 반복하면서

${i} * ${j} = ${i * j}를 출력하는 코드입니다.


그러면 중간에 변화를 주겠습니다.


for (i in 1..3) {
for (j in 1..3) {
if (i * j == 6) {
break
}
println("${i} * ${j} = ${i * j}")
}
}


2 * 3 = 6

3 * 2 = 6

3 * 3 = 9

이렇게 3개의 결과가 출력되지 않는 것을 확인 할 수 있습니다.


그 이유는 i * j가 6이 되는 시점에 j가 속해있는 for문을 break로 인해 멈추기 밖으로 나가기 때문입니다.


for (i in 1..3) {
for (j in 1..3) {
if (i * j == 6) {
continue
}
println("${i} * ${j} = ${i * j}")
}
}


이번에는 break와는 다르게

3 * 3 = 9

가 출력이 되었습니다.


그 이유는 continue는 반복문 자체를 멈추는 것이 아니라 현재 반복문의 한 사이클을 멈추고 다음 사이클을 실행하기 때문입니다.

그래서 i * j의 값이 6이 되는 부분만 출력하지 않고 나머지 반복문을 계속 진행하는 것입니다.




다음은 java에는 없고 c를 배울 때 사용 했던 goto문과 비슷한 것에 대해 알아보겠습니다.

바로 break와 continue에 label를 붙이는 것입니다.


loop1@ for (i in 1..3) {
loop2@ for (j in 1..3) {
if (i * j == 6) {
continue@loop1
}
println("${i} * ${j} = ${i * j}")
}
}


for앞에 loop1@라는 라벨이 생겼습니다.

continue뒤에 @loop1라는 라벨이 생겼습니다.


결과값은 break문과 동일합니다.

그 이유는 i가 속해있는 for문에 loop1라는 라벨을 넣어주고 continue에서 loop1 라벨을 붙여주었고 그로 인해 loop1으로 점프한 효과를 볼 수 있기 때문입니다.


loop1@ for (i in 1..3) {
loop2@ for (j in 1..3) {
if (i * j == 6) {
break@loop1
}
println("${i} * ${j} = ${i * j}")
}
}


이제는 continue대신 break에 라벨을 붙여봤습니다.


이제는 i * j가 6일 때 loop1라벨이 붙은 반복문을 break해버립니다.

그래서 결과가 2 * 3 = 6일 때 i가 속해있는 반복문이 멈추게 됩니다.


이렇게 라벨을 사용하게 되면 이중포문 혹은 삼중포문에서 탈출을 한번에 할 수 있는 효과를 볼 수 있습니다.

728x90
반응형
728x90
반응형

이번에는 흐름제어에 대해서 알아보겠습니다.


흐름제어에는 제어문에 해당하는 if, when이 있고 반복문에 해당하는 for, while이 있습니다.

자바와 다른점은 switch가 보이지 않고 새로운 when이 생겼다는 것입니다.


제어문이란 조건이 참이면 해당 분기로 들어가서 코드를 수행하는 것이고

반복문이란 조건이 참이면 해당 분기로 들어가서 코드를 수행하고 조건이 거짓이 될 때 까지 코드를 반복해서 수행하는 것입니다.


if는 총 3개의 형태를 가지고 있습니다.

  1. if
  2. if...else
  3. if...else if...else
if는 ()안에 조건이 참일 경우에 {}안에 코드를 실행하는 조건문입니다.
if else는 바로 위의 if나 if else가 거짓이고 ()안에 조건이 참일 경우에 {}안에 코드를 실행하는 조건문입니다.
else는 if나 if else가 모두 거짓일 경우 처리하는 조건문 입니다.

var score = 100
if (score >= 90) {
println("A")
} else if (score >= 80) {
println("B")
} else if (score >= 70) {
println("C")
} else {
println("D")
}

위 코드는 score가 

90 이상이면 A

80 이상이면 B

70 이상이면 C

그 외에는 D를 출력하는 코드입니다.



when은 switch의 확장판이라고 보면 좋을 것 같습니다.

val x = 1
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}

위 코드를 보면서 switch와 다른점을 보겠습니다.

- switch가 when으로 변경

- case 1:이 1로 변경

- ->가 새로 추가

- break; 사라짐

- default가 else로 변경

입니다.


when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}

또한 ,를 사용해서 여러개 조건을 동시에 처리 할 수도 있습니다.

마치 break를 사용하지 않고 여러개 case를 처리하는 것과 같다고 볼수 있습니다.


val x = 1
val s = "1"
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}

자바에서는 case에 들어가는 값들은 상수만 가능했지만 when에서는 함수의 결과값을 넣을 수 있습니다.


val x = 5
val validNumbers = ArrayList<Int>()
validNumbers.apply {
add(30)
add(40)
add(50)
}
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}

in 키워드를 사용하면 범위의 값을 확인 할 수 있습니다.

apply는 나중에 설명하겠습니다.



for는 자바에 있는 for-each 문과 비슷합니다.

val validNumbers = ArrayList<Int>()
validNumbers.apply {
add(10)
add(20)
add(30)
add(40)
add(50)
}

for (item in validNumbers) {
println(item)
}

validNumbers에 있는 값들을 item에 첫 번째부터 넣어서 가져옵니다.


for (i in validNumbers.indices) {
println(i)
}

만약 인덱스 값을 가져오고 싶다면 indices값을 사용합니다.


for ((index, value) in validNumbers.withIndex()) {
println("index: ${index}, value: ${value}")
}

index와 value를 같이 가져오고 싶다면 withIndex()를 사용해서 가져올 수 있습니다.



while은 ()안에 값이 참인 경우에 동작하는 반복문 입니다.

자바에 있는 것과 동일하게 사용하시면 됩니다.

var i = 0
while (i < 10) {
println(i)
i++
}

while

var i = 0
do {
println(i)
i++
} while (i < 10)

do while


728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

(Kotlin) Break, Continue  (0) 2017.10.06
(Kotlin) Scanner로 입력받기  (2) 2017.07.12
(Kotlin) 속성 기본 타입  (0) 2017.07.06
(Kotlin) IntelliJ 프로젝트 생성하기  (0) 2017.07.06
(Kotlin) 코틀린이란  (0) 2017.07.06
728x90
반응형

이번 글은 콘솔에서 데이터를 입력 받는 부분에 대해서 알아 보겠습니다.


사용자로부터 데이터를 입력 받기 위해서는 Scanner 객체에 System.in(InputStream)을 넣어서 생성한 인스턴스를 사용해야합니다.


System.in은 키보드와 연결 된 자바의 표준 입력 스트림으로 사용자가 키보드를 통해 입력한 데이터를 컴퓨터를 통해 프로그램에 전달해주는 역할을 합니다.


Scanner객체는 System.in을 통해 전달 된 데이터를 언어의 기본타입으로 변환해주는 역할을 합니다.


위에 설명했던 내용들을 Kotlin 코드로 아래와 같이 나타낼 수 있습니다.

import java.util.Scanner

fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)
}

Java를 했던 사람이라면 위 코드가 어떤 형태인지 금방 이해 할 것입니다.


Scanner객체에 System.in이라는 InputStream을 넣어서 만든 인스턴스를 sc에 저장한 형태입니다.


그리고 Scanner객체는 java.util패키지 안에 있는 클래스이기 때문에 import를 사용해서 추가해줘야합니다.


여기서 Java와 다른점이 System.`in`입니다.


in은 Kotlin에서 사용하는 예약어라서 Java에서 사용하던 변수명을 ``으로 감싸서 사용하는 것입니다.


Scanner 객체에서 사용하는 주요 메소드들입니다.


 메소드

설명 

 next(): String!

 String 타입으로 리턴

 nextByte(): Byte

 Byte 타입으로 리턴

 nextShort(): Short

 Short 타입으로 리턴

 nextInt(): Int

 Int 타입으로 리턴

 nextLong(): Long

 Long 타입으로 리턴

 nextFloat(): Float

 Float 타입으로 리턴

 nextDouble(): Double

 Double 타입으로 리턴

 nextLine(): String!

 '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문자열을 String  타입으로 리턴

지금 String뒤에 !에 대해서 몰라도 상관없습니다. 이 부분은 나중에 다루겠습니다.


간단한 예제로 이름과 나이를 입력받고 콘솔에 출력해주는 코드를 작성해 보겠습니다.


fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)

val name = sc.nextLine()
val age = sc.nextInt()

println("name: $name, age: $age")

}

name을 nextLine으로 문자열을 입력받고 age를 nextInt로 정수를 입력받습니다.

그리고 println함수를 사용해 name과 age를 출력합니다. 



위는 결과 화면입니다.



728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

(Kotlin) Break, Continue  (0) 2017.10.06
(Kotlin) 흐름제어 if when for while break continue  (0) 2017.07.12
(Kotlin) 속성 기본 타입  (0) 2017.07.06
(Kotlin) IntelliJ 프로젝트 생성하기  (0) 2017.07.06
(Kotlin) 코틀린이란  (0) 2017.07.06
728x90
반응형

이번에는 Kotlin에서 속성을 어떻게 선언하고, 어떤 타입들이 있는지 알아보겠습니다.


(출처: https://kotlinlang.org/docs/reference/properties.html)


Kotlin 공식사이트에 나와있는 문서를 가져왔습니다.


속성은 var과 val 두가지로 선언할 수 있으며 var은 변수, val은 상수입니다.

한마디로 var은 read와 write가 가능하지만 val은 read-only입니다.


Java에서는 PropertyType propertyName순으로 와야 했지만

Kotlin에서는 그 반대로 propertyName이 먼저오고 뒤에 :을 붙인 다음 PropertyType이 나옵니다.

또한 속성값을 초기화 하거나 getter를 지정해 준다면 PropertyType은 생략할 수 있습니다.


C나 Java에서 항상 코드 마지막에 넣어야 했던 ;을 넣지 않아도 됩니다!

넣어도 컴파일에러는 나지 않는다. 그래도 넣지말자!


그리고 속성에 이름을 지정할 때 규칙이 있는데 @, #, !와 같은 특수문자와 공백을 사용할 수 없고 _는 사용이 가능합니다.

Java에서는 $도 사용이 가능했지만 Kotlin에서는 불가능

var money1: Int = 100
var money2 = 100
var money3: Int
money3 = 100

money1은 PropertyType과 속성값 초기화를 같이 한 방법입니다.

money2는 속성값 초기화를 함으로써 money2의 PropertyType을 자동으로 알게 하는 방법입니다.

money3는 PropertyType만 정하고 속성값은 나중에 넣어주는 방법입니다.


그럼 이제 속성 기본 타입이 어떤것이 있는지 알아보겠습니다.


기본 타입에는 숫자(number), 문자(character), 논리(boolean), 배열(array)이 있습니다.

숫자는 Double, Float, Long, Int, Short, Byte

문자는 Char, String

논리는 Boolean

배열은 Array<T>입니다.

<T>은 Generic입니다. 여기서는 다루지 않고 다음에 알아보겠습니다.


숫자속성의 크기는 아래와 같습니다.


TypeBit width
Double64
Float32
Long64
Int32
Short16
Byte8

출처: https://kotlinlang.org/docs/reference/basic-types.html




정수에서 리터럴 상수는 아래와 같이 표현이 가능합니다.

10진수: 123

Long type 10진수: 123L

16진수: 0x0F

2진수: 0b00001011


Java에서는 8진수를 지원을 하는데 Kotlin에서는 8진수 대신 2진수를 지원합니다.

var literal1: Int = 123
var literal2: Long = 123L
var literal3: Int = 0x0F
var literal4: Int = 0b00001011



실수에서 리터럴 상수는 아래와 같이 표현이 가능합니다.

Double: 123.5, 123,5e10

Float: 123.5f, 123.5F

var literal5: Double = 123.5
var literal6: Double = 123.5e10
var literal7: Float = 123.5f
var literal8: Float = 123.5F


그리고 자리수가 큰 숫자를 한눈에 보기 편하게 하기 위해 _를 사용 해서 표현할 수 있습니다.

(Underscores in numeric literals)

콘솔에서는 _가 제거된 형태로 출력됩니다.

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010




문자는 Char, 문자열은 String으로 나타낼수 있습니다.


Char는 작은따옴표로 표현합니다.

var one: Char = '1'
var a: Char = 'a'
var percentSign = '%'


String은 큰따옴표로 표현합니다.

또한 Char Array로도 볼 수 있어서 []을 사용해서 Char를 가져올 수 있습니다.

var helloKotlin: String = "Hello Kotlin"
var helloAndroid4Kt: String = "Hello Android for Kotlin"
helloAndroid4Kt[0]
helloAndroid4Kt.get(0)


String은 다른 변수값을 포함해 만들 수 있습니다.(String Templete)

var name = "Googry"
var introduce = "My name is $name!"
println(introduce)



Boolean은 참(ture)과 거짓(false)을 나타낼 때 사용하며 반복문, 조건문 등에 사용됩니다.

다른 언어와 같이 ||(OR), &&(AND), !(Negation)을 사용합니다.

var isThreadRunning: Boolean = true
if(!isThreadRunning)
println("Thread is not Running")

if는 조건문으로 다음 포스팅 때 자세히 설명하겠지만 간단하게 이야기 하면 ()안의 값이 true일 때 if아래 코드가 실행되는 것입니다.




Array는 같은타입의 변수들의 모음이라고 볼 수 있습니다.

기본적으로 get(), set()을 가지고 있고 [index]과 같은 동작을 합니다.

size라는 속성을 가지고 있고 Array안에 item의 개수를 나타냅니다.


Array생성은 arrayOf()를 사용해서 만듭니다.

var x: Array<Int> = arrayOf(1, 2, 3)
// get
x[0]
x.get(0)
// set
x.set(0, 2)


그리고 Kotlin에서는 숫자, 문자, 논리에 해당하는 기본 Array클래스를 제공합니다.

StringArray는 제공하지 않습니다.

var intArray: IntArray = intArrayOf(1,2,3)
var doubleArray: DoubleArray = doubleArrayOf(1.1,2.2,3.3)
var charArray: CharArray = charArrayOf('a','b','c')
var booleanArray: BooleanArray = booleanArrayOf(true, false, false)


728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

(Kotlin) Break, Continue  (0) 2017.10.06
(Kotlin) 흐름제어 if when for while break continue  (0) 2017.07.12
(Kotlin) Scanner로 입력받기  (2) 2017.07.12
(Kotlin) IntelliJ 프로젝트 생성하기  (0) 2017.07.06
(Kotlin) 코틀린이란  (0) 2017.07.06
728x90
반응형


우선 Kotlin을 사용하기 위해 JetBrains 홈페이지에 들어가서 IntelliJ IDEA를 설치해보겠습니다.

Windows: https://www.jetbrains.com/idea/download/#section=windows

Mac: https://www.jetbrains.com/idea/download/#section=mac 

Linux: https://www.jetbrains.com/idea/download/#section=linux


저는 맥북을 사용해서 macOS로 설치하는데 OS에 맞는 것을 다운받아주면 됩니다.


우리는 Kotlin만 사용하면 되니까 Community로 다운받아 줍니다.


다운받아서 설치하고 실행하면 아래와 같이 로딩화면이 나오고


아래와 같은 화면이 나오면 정상 동작입니다.


자 그럼 Create New Project를 눌러서 프로젝트를 만들어보겠습니다.


새로운 프로젝트를 만드는 창입니다.


Java에서 Kotlin(Java)를 체크 해주시고 Next를 눌러주세요.


프로젝트의 이름과 경로를 설정하는 창입니다.


Project Name에 HelloKotlin이라고 넣고 Project Location은 원하는 경로를 넣어주세요.

그 다음에 Finish를 눌러주세요.


짠~


프로젝트 생성에 성공했습니다.


그럼 이제 Kotlin 코드를 작성할 .kt파일을 만들어봅시다.

Kotlin파일의 확장자명은 .kt입니다.



간단하게 src 폴더를 우클릭하시고 New -> Kotlin File/Class를 선택해주세요.


그리고 Name에 HelloKotlin라고 넣어주시고 OK를 눌러주세요.

(지금 단계에서 Kind는 신경쓰지마세요)




HelloKotlin.kt가 생겼습니다.


이제 Java에서 main함수를 만들듯이 Kotlin에서 main함수를 만들어보고 println()를 사용해 콘솔에 출력해봅니다.


여기서 fun main(args: Array<String>{ ... }은 프로그램이 시작되는 함수이고 함수 안에 args: Array<String>은 추가적으로 데이터를 넣어서 실행 할 때 args로 데이터가 들어오게 됩니다.

그리고 println("Hello Kotlin!")은 Hello Kotlin!이라는 문자열을 콘솔에 출력하겠다는 의미입니다.


위 코드는 아래 Java 코드와 동일한 역할을 합니다.


이제 실행을 해봅니다.


코드 왼쪽에 코틀린로고를 누르면 3개의 선택지가 나오고 Run 'HelloKotlinKt'를 선택해 실행해 줍니다.



IntelliJ아래에 위와 같이 출력되면 성공입니다.










728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

(Kotlin) Break, Continue  (0) 2017.10.06
(Kotlin) 흐름제어 if when for while break continue  (0) 2017.07.12
(Kotlin) Scanner로 입력받기  (2) 2017.07.12
(Kotlin) 속성 기본 타입  (0) 2017.07.06
(Kotlin) 코틀린이란  (0) 2017.07.06
728x90
반응형



Kotlin JetBrains사에서 2011년 7월에 처음 공개 되었고 2016년 2월 15일에 1.0버전으로 릴리즈 되었습니다.

https://en.wikipedia.org/wiki/Kotlin_(programming_language)


Kotlin 정적타입 프로그래밍 언어로 불리며 JVM위에서 동작하는 언어입니다.


그리고 2017년 5월 17일 Google I/O Kenoty에서 Google은 Kotlin을 안드로이드에 정식 지원하겠다고 발표를 했습니다.


https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/

https://youtu.be/EtQ8Le8-zyo?t=8m44s


물론 그 전에도 Android Studio에서 Kotlin을 plugin해서 사용할 수 있었지만 Android Studio 3.0부터는 따로 plugin하지 않아도 사용할 수 있습니다.


앞으로 올라올 글은 Android에서 Kotlin을 어떻게 사용하는지가 아니라 Java를 처음 배울 때 처럼 Kotlin의 문법에 대해서 만 정리해서 올릴 것이며 Kotlin의 문법에 대해 포스팅을 어느정도 하고나서 Android에서 Kotlin을 어떻게 사용하는지 올릴 것입니다.


Kotlin과 관련된 사이트, 그룹, 링크

Google I/O 17 Introduce Kotlin: https://www.youtube.com/watch?v=X1RVYt2QKQE

Kotlin 공식 홈페이지: https://kotlinlang.org/

Kotlin 언어 한국 사용자 모임: http://kotlin.kr/

Kotlin Korea Facebook Group: https://www.facebook.com/groups/kotlinkr/?fref=ts

Koltin Korea Slack: https://kotlinkr.herokuapp.com/

728x90
반응형

+ Recent posts