2
私はいくつかの問題を解決するために、関数の名前を使用したいが、@inline(__always)
とうまく動作しない#function
ようだと思い、ここに私のコードです:インライン関数で `#function`シンボルを使うにはどうすればいいですか?
@inline(__always) func log() {
print(#function)
}
func a() { log() } // want 'a()', but got 'log()'
func b() { log() }
func c() { log() }
//...
誰も説明できますか?それは単なる愚かな考えです。あなたの意図は log()
を呼び出す関数の名前を印刷する場合スウィフトブログでBuilding assert()
in Swift, Part 2: __FILE__
and __LINE__
で を実証したよう
しかしインライン@inlineデバッグビルドで(最適化がオフになっているとき)属性は無視されます。プレイグラウンドやデバッグビルドでコードを使用できる理由をplsに説明できますか? –
はい、それは私が最後に問題を解決した方法です、私が混乱していたのは、各関数の名前であるはずです。 '@inline(__ always)'シンボルがあるので、私は 'inline'の概念を誤解しましたか?私の貧しい人のために申し訳ありませんが、私はネイティブスピーカーではありません。 – jianstm
@OlegGordiichuk:OPは、呼び出し元の関数の名前を出力するログ関数を求めています。関数がインライン化されているかどうかは関係ありません。 –