2017-06-22 16 views
-1

私はカスタムクラスの変数とメソッドの拡張機能を使いたいと思っています。 私はコードの下にしようとしていますが、エラーKotlinの拡張機能

ローカル拡張プロパティは、拡張機能を使用する方法

val Double.km: Double get() = this * 1000 
val Double.m: Double get() = this 
val Double.cm: Double get() = this/100 
val Double.mm: Double get() = this/1000 
val Double.ft: Double get() = this/3.28084 

val oneInch = 25.4.mm 
println("One inch is $oneInch meters") 
// prints "One inch is 0.0254 meters" 
val threeFeet = 3.0.ft 
println("Three feet is $threeFeet meters") 
// prints "Three feet is 0.914399970739201 meters" 

許可されていないばかり?インターフェイスで拡張機能を使用できますか?

答えて

3

これらの宣言を関数本体からクラス本体に移動する必要があります。エラー状態と同様に、拡張プロパティをローカルで定義することはできませんが、ローカル拡張メソッドは正常です。あなたが行うことができ、あなたの場合はそう

class MainClass { 
    val Double.km: Double get() = this * 1000 
    val Double.m: Double get() = this 
    val Double.cm: Double get() = this/100 
    val Double.mm: Double get() = this/1000 
    val Double.ft: Double get() = this/3.28084 

    fun run() { 
     val oneInch = 25.4.mm 
     println("One inch is $oneInch meters") 
    } 
} 

外の利用が可能ではないながら、あなたは、あなたのMainClass内から拡張プロパティを使用することができます。

+0

ローカルクラスの拡張子を使用する例を追加できますか –

+0

ローカル拡張プロパティが許可されない理由は何ですか(問題の原因となるのは何でしょうか)。 – Jesper

+1

@Jesper私はこれらをすくい上げることはできないだろうと思う。私はドキュメンテーション/理由をオンラインで見つけることができませんでした。 – tynn

関連する問題