2017-08-30 11 views
2

たぶん、この質問は、私たちがKotlin拡張子をクラスファイルに配置する方法は?

class Jazz { 
... 
} 

extension Jazz { 
    func swing() { 
    ... 
    } 
} 

のようなものを書いて、単一でその全体のコードスニペットを配置するために使用されているスウィフトでofficial docに答えているが、私はそれを見ていないよ...

ファイル(例:Jazz.swift)。

Kotlinでは対応することができないようですか?私はいつも自分の書くことを見つけています。 1つのJazz.ktと1つのJazzExtensions.ktがありますが、これはコードを構造化する際に必ずしも明確な方法ではありません。

これに関するご意見はありがたいです。

+1

同じKotlinファイル内に 'class Jazz'と' fun Jazz.swing(){} 'を入れたのと同じコードはありませんか? – BakaWaii

+0

なぜ拡張機能を使用して、クラス内の通常の関数として関数を追加するだけではありませんか? – s1m0nw1

+0

@BakaWaiiはい、それは明らかです:)。私は前にそれを試したことを誓います。 – Algar

答えて

2

あなたはクラスの内部または外部拡張機能を配置することができます:外

class Jazz { ... } 

fun Jazz.bar() { 
    println("hello") 
} 

companion objectで)内側:

import YOUR_PACKAGE.Jazz.Companion.bar 

fun main(args: Array<String>) { 
    Jazz().bar() 
} 

class Jazz { 
    companion object { 
     fun Jazz.bar() { 
      println("hello") 
     } 
    } 
} 
+0

ありがとう!私はまだ 'extension'キーワードが欠けています。たぶん明るいKotlinの未来。 – Algar

1

それは、スウィフトとは非常に異なっていないのです

class Jazz { 
    val a = "Jazz" 
} 

fun Jazz.swing() = a 

//////////// 

fun main(args: Array<String>) { 
    print(Jazz().swing()) // >>> Jazz 
} 
+1

ハハハ、私はそれを試したことを誓っていたかもしれない...くそー、これはすぐに恥ずかしかった:)。答えをありがとう、しかし、私は@ guenhterのそれを受け入れたより詳細だった。 – Algar

+0

そして彼は最初もそうだった:) –

関連する問題