2017-05-18 6 views
11

Kotlin에서 상수를 만드는 것이 어떻습니까? 명명 규칙은 무엇입니까? 나는 설명서에서 그것을 발견하지 못했습니다.Kotlin의 상수 - 어떻게 만들지 권장되는 방법입니까?

companion object { 
    //1 
    val MY_CONST = "something" 

    //2 
    const val MY_CONST = "something" 

    //3 
    val myConst = "something" 
} 

또는 ...?

+0

을 참조 할 수 있습니다 자바에서'public static final' 필드에 해당하는 것을 원한다면, 당신의 컴패니언 객체에서'const val'을 사용하십시오. 'private static final' 필드와 public getter를 원한다면, 당신의 컴패니언 객체에서'val'을 사용하십시오. – Michael

답변

10

컴파일 타임에 알려진 값은 (내 의견으로는) 상수로 표시 될 수 있습니다.

명명 규칙은 Java 코드 규칙을 따라야하며 Java 코드에서 사용하는 경우 제대로 표시되어야합니다 (어쨌든 동반자 개체를 사용하여 구현하는 것이 어렵습니다).

적절한 상수 선언은 다음과 같습니다 코 틀린에

const val MY_CONST = "something" 
const val MY_INT = 1 
+1

'명명 규칙은 Java를 따라야합니다 .' - 왜? – Jodimoro

+1

Kotlin은 보통 interop를 매끄럽게하기 위해 기본적으로 Java 규약을 따릅니다. – zsmb13

+4

@Jodimoro http://kotlinlang.org/docs/reference/coding-conventions.html – Neil

10

, 당신은 다음처럼 만들 수있는 클래스와 함께 사용하도록되어있는 지역 상수를 만들려면 아래

val MY_CONSTANT = "Constants" 

그리고 public static final과 같이 kotlin의 public 상수를 과 같이 만들려면 다음과 같이 작성하면됩니다.

companion object{ 

    const val MY_CONSTANT = "Constants" 

} 
0

지역 상수 :

const val NAME = "name" 

글로벌 상수 :

object MyConstants{ 
    val NAME = "name" 
    val ID = "_id" 
    var EMAIL = "email" 
} 

액세스 MyConstants.NAME

0
class Myclass { 

companion object { 
     const val MYCONSTANT = 479 
} 

당신은 두 가지 선택이 CONST 키워드를 사용하거나 사용할 수 있습니다 그것을 자바로 만드는 @JvmField 정적 최종 상수.

class Myclass { 

    companion object { 
      @JvmField val MYCONSTANT = 479 
    } 

는 일정하게 당신을 위해 당신이 자바를 호출 할 방법을 넣어됩니다 컴파일 후 다음 @JvmField 주석을 사용하는 경우.
Java에서 호출하는 것처럼 컴파일러는 코드에서 동반 상수를 호출 할 때이를 대신합니다.

그러나 const 키워드를 사용하면 상수 값이 인라인됩니다. 인라인으로 나는 실제 값이 컴파일 된 후에 사용된다는 것을 의미합니다.

//so for @JvmField: 

Foo var1 = Constants.FOO; 

//and for const: 

Foo var1 = 479 
1

당신은 클래스, 개체 또는 코 틀린에 상수를 선언하는 동반자 개체를 필요가 없습니다 그래서 여기에 요약 할

컴파일러가 당신을 위해 무엇을 할 것입니다. 모든 상수 (예 : Constants.kt)를 포함하는 파일을 선언하고 파일 내에서 상수를 직접 선언 할 수 있습니다. 컴파일시 알려진 상수는 const으로 표시되어야합니다.

const val MY_CONST = "something"

을 한 다음 사용하여 상수를 가져올 수 있습니다 :

그래서,이 경우, 그것은해야

import package_name.MY_CONST

당신이 link