15

Huge proponent of using the 'var' keyword in C# for cases where it's very clear. For instance, rather than this...

ThisIsMyReallyLongFooClassName foo = new ThisIsMyReallyLongFooClassName();

I can type this...

var foo = new ThisIsMyReallyLongFooClassName();

...and I still have a strongly-typed variable. The two are, for all intents and purposes, equal. The latter is just more readable (again, because it's clear. There are cases where it isn't and 'var' shouldn't be used. I don't want this to become a discussion of that however.)

I'm wondering if Objective-C has anything similar.

4

7 に答える 7

14

はいといいえ。

常に動作する which を使用できid foo = ...ますが、型情報が失われます。

本当に同等のものが必要な場合はauto foo = ...、C++11 から使用できますが、ファイルを Objective-C++ としてコンパイルする必要があり、これには他にも多くの副作用があります。

慣習は、タイプを綴るだけです。面倒ですが、テンプレート/ジェネリックによって型名が非常に長くなる可能性がある C++、C#、Java とは異なり、通常は Objective-C で管理できます。

于 2013-01-12T22:57:45.003 に答える
5

いいえ、Objective C には同等のものはありません。C++11 ではautoそれを行うキーワードが導入されましたが、C にも Objective C にも同様の機能はありません。

idC# のdynamicキーワードに最も近いものです。varプロパティ構文を使用してプロパティにアクセスできないことを除いて、と同様の結果を得ることができます。プロパティアクセサーを実装するメソッドを含むメソッドを呼び出すことができます。

于 2013-01-12T22:57:30.800 に答える
4

Objective-C にはキーワードがありますが、キーワードではなく C#idのキーワードと同等であることに注意してください。暗黙の型付けです。つまり、型は推論されますが、静的な型付けのままです。および動的型付け用であり、型情報が失われます。dynamicvarvardynamicid

于 2013-01-12T22:58:55.253 に答える
1

残念ながら、Objective C には強力な型付けを維持できるような同等のものは存在しません。

于 2013-01-12T22:57:00.217 に答える
0

Objective C でidキーワードを使用できますが、C# としては機能しません

C#で

var stringVar = ...

stringVar文字列変数として機能し、次のようにして文字列関数にアクセスできますstringVar.function

id stringVar = [NSString ...]

ただし、通常の ID タイプとして機能します。

于 2013-01-12T23:52:16.187 に答える