2016-04-29 27 views
1

Swift 2で変数のコンパイル時の名前を取得する方法はありますか? 新しいクラスインスタンスを参照する最初の変数名を意味します。ここでSwift:変数のコンパイル時の名前を取得する(クラス参照)

は簡単な例です:

public class Parameter : FloatLiteralConvertible { 
    var name:String? 
    var value:Double 
    // init from float literal 
    public required init (floatLiteral value: FloatLiteralType) { 
     self.value = Double(value) 
     self.name = getLiteralName() 
    } 
    func getLiteralName() -> String { 
     var literalName:String = "" 
     // do some magic to return the name 
     return literalName 
    } 
} 

let x:Parameter = 2.0 
print(x.value) // this returns "2.0" 
print(x.name!) // I want this to return "x" 

私はすでにそのトピックの取り扱いミラーリングまたはObjective-Cの反射で同様の質問をチェックしました。しかし、これらのすべてのケースでは、クラス内のプロパティ名(例:namevalueの例)のみを取得できます。 Swift: Get Variable Actual Name as String - -

同じ質問が2014年に頼まれたと私はそれ以来、SWIFT 2.

答えて

3

ませ内の溶液があることを、願って、それをする方法はありません。

変数が通常存在しないコンパイル済み状態であることを理解しておく必要があります。最適化することも、実行スタック上の項目としてのみ表現することもできます。

スウィフトの持つ反射がはるかに優れている言語であっても、通常はローカル変数を検査することはできません。

ローカル変数の名前を動的に取得することは実用的なケースではありません。

+0

ありがとうございました。私の場合の実際の使用は、ユーザーが変数を宣言したときに、数学フレームワークをより使いやすくすることです。私は変数名を格納する必要があり、私はデフォルト名としてソースコードのリテラルを得ることができればよかったでしょう。もちろん、 'let x = Parameter(" x "、2)'は常にオプションですが、それほどエレガントではありません。 – dundee

+0

@dundee問題は、いったん 'let y = x'と書いたらアイデアが壊れることです。関数からパラメータを返すのはどうですか?次に変数の名前は無名です... – Sulthan

関連する問題