2016-04-12 2 views
0

私はいくつかの変数が定義されている:Swift - 変数の名前を印刷しますか?

は後で私のコードで
let purpleSquareCategory: UInt32 = 1 << 0 
let circleCategory:   UInt32 = 1 << 1 
let blueSquareCategory:  UInt32 = 1 << 2 
let edgeCategory:   UInt32 = 1 << 31 

、私は、例えばその中にこれらの値のいずれかで一時変数を持っています

let x = nodeCategory 

私の定義済みカテゴリxのどれかを示すメッセージを印刷する方法はありますか?例えば

print("x is variable zzz") 

ZZZはpurpleSquareCategory、など個人的に

circleCategoryであり、私はそれが実行時に解決しなければならないであろうと、変数名が利用可能ではないので、それを行うことができることを見ることができません。

私は何か他の手段で欲しいものを達成できますか?例えば私のカテゴリに列挙型やその他の型を使用していますか?

私は書くことができないのであれば、衝突および/または連絡先を使用して、任意のスウィフトのプログラムにドロップされるように設計されたスタンドアロンのヘルパー関数を、書き込みしようとしている

if category == purpleSquareCategory {print("Purple Square")} 
if category == circleCategory {print("Circle")} 

ので、私の中でどのカテゴリが定義されているのか分かりません。

+0

'OptionSetType'を見てください。これはビットシフト定数専用です。 – vadian

+0

しかし、これらのヒントのいずれかが、一致するカテゴリを持つ変数の名前を印刷できるようになりますか? –

+0

私はあなたが望むものを達成できるとは思わない。私が知っていることは、使用している変数のタイプを確認することです:Mirror(反映:item).subjectType。 – caiomcg

答えて

0

これは解決策としてどうなりますか?ここで何か不足していますか?

var str = "Hello, playground" 
let purpleSquareCategory: UInt32 = 1 << 0 
let circleCategory:   UInt32 = 1 << 1 
let blueSquareCategory:  UInt32 = 1 << 2 
let edgeCategory:   UInt32 = 1 << 31 
print("\(purpleSquareCategory)") 
let x = circleCategory 
switch (x) { 
    case purpleSquareCategory: 
    print("purple") 
    break 
case circleCategory: 
    print("circle") 
    break 
case blueSquareCategory: 
    print("blue") 
    break 
case edgeCategory: 
    print("edge") 
    break 
default: 
    break 
} 
+0

いいえ - 私の機能は、問題が発生したプログラムにドロップされ、変更されずに呼び出されるように設計されているため、そのような構造を追加することはできません。 –

+0

私がしたいのは、変数の名前をプログラムで発見することで、プログラム内のどの変数が特定の値を持つかを出力することです。私は翻訳された言語でそれをやったことがありますが、コンパイルされた言語のためにそれがどのようにできるのか分かりません。 –

+0

はい、私はそれがとても簡単だと思いました。 &と|のような論理演算子はどうでしょうか? 〜と前記変数よりコンパクトなソリューションを手に入れることができますか?彼らは結局のところ、ビットマップはありませんか?彼らは1、2、4、何ですか2147483648です。 – user3069232

関連する問題