18

ほとんどの言語は、true/falseブール値のキーワードを使用します。Smalltalkでさえ使用していることがわかりましたtrue/false。Objective-Cは、言語自体ではなく、Smalltalkから概念を借用しているだけですがYES/NO、広く使用されているのではなく、なぜそれを使用しているのか興味がありtrue/falseます。歴史的な理由はありますか?

4

5 に答える 5

35

Objective-C は、C の厳密なスーパーセットになるように設計されました (そして今もそうです)。作成者は、C との互換性を決して壊さないようにするために非常に懸命に働きました。彼らはまた、コードのどの部分が Objective-C を使用しており、どの部分がプレーン C を使用しているかを簡単に識別できるように、変更をある程度明確にしようとしました@。これにより、プレーンな C 文字列を新しい文字列と共存させることができます。

C には、TRUE/FALSE マクロの非公式なシステムが既にありました。Objective-C の設計者は、競合を回避し、コードが実際に Objective-C であることを明確にするために、YES/NO マクロを選択したと思われます。nil古き良き NULL の動作を変更するだけでなく、「空の」オブジェクトの使用法にも注意してください。

于 2011-06-21T06:14:29.460 に答える
4

Objective-C は非常に冗長な言語であり、すべてのメソッドは非常に記述的であり、ブール値に true/false の代わりに YES/NO を使用すると、人間が読みやすくなります。

次の会話が実際に起こった場合、おそらく奇妙に感じるでしょう: A: 「映画を見ましたか?」B:「そうです」

B が「はい」(または「いいえ」) と答えた場合、それは完全に正常に聞こえ、コードは true/false の代わりに YES/NO を使用することでより平易な英語のように見えます。

于 2011-06-21T06:21:16.573 に答える
3

Apple は常に物事を使いやすくしようと努めてきました。YES|NOいくつかのシステム ブール値メソッドを読んで、またはを使用してブール値の質問に答えるのがより理にかなっている方法を自問すると 、答えが私の意見にあることにTRUE|FALSE感謝することがわかります。YES|NO

それ以外の場合は、コードでいつでも使用できTRUE|FALSEます。

于 2011-06-21T06:07:13.330 に答える
2

奇妙ですが、 / (これも機能します) よりもYES/マクロを使用した方がコードが読みやすいことがわかりました。NOTRUEFALSE

ただし、現在、Objective-C は C99 のスーパーセットであるため、可能な限りC99booleantrueを使用する必要があります。私はand to andfalseを定義するという考えをもてあそびましたが、これまで抵抗してきました。yesnotruefalse

于 2011-06-21T08:09:55.020 に答える