クラス テンプレートをオーバーロードoperator<<
したいとします。optional<T>
「不在値」をどのように出力し、「実際の値」x をどのように出力しますか?
none
some x
また
[]
[x]
x
または、最初のケースと2 番目のケースでは文字通り何も出力しないでください。これは通常どのように処理されますか?
クラス テンプレートをオーバーロードoperator<<
したいとします。optional<T>
「不在値」をどのように出力し、「実際の値」x をどのように出力しますか?
none
some x
また
[]
[x]
x
または、最初のケースと2 番目のケースでは文字通り何も出力しないでください。これは通常どのように処理されますか?
None
私は印刷のオプションが好きSome x
です。これは何が起こっているかをすぐに説明していると思います (特に Haskell に詳しい人にとっては)。
個人的には、[]
and[x]
の代替手段は使用しません。多くの言語では、角かっこを使用してある種のリストを表すからです。その出力を見ると、オプションのタイプではなく、リストが出力されたとすぐに思うでしょう。
コンテキストがない場合、オプションは、空であるかメンバーが 1 つあるコレクションの特殊なケースと考えることができます。
コレクションまたは複合オブジェクトを出力する方法については、おそらく既に慣例がありますが、それが{}
空であるか{x}
、値x
がある場合などは合理的だと思われます。空のベクトルを として出力し、none
3 つの要素を持つベクトルをとして出力する場合、必ずsome x y z
同じ規則をオプションの型に適用します :-)
特定の慣習については知りません。個人的には(null)
、値が欠落している場合は印刷し、それ以外の場合は実際の値を印刷します。
種類によって異なります。文字列を出力したい場合は、"" または "Fred" になります。配列の場合は、{} または { 1, 2, 3 } になります。
このビデオまたは Web ページに添付されているコードに従うと、役に立ちます。 きれいなプリンター
動作の選択は、おそらく、出力演算子を実装する理由に基づいている必要があります。主にデバッグ目的の場合は、値が欠落しているという視覚的な手がかりを提供することが重要です。コマンド ヘルプ メッセージなどでオプションを示すために角括弧がよく使用されることを考えると、既存の値を角括弧で囲んだり、値が欠落している場合は開き括弧と閉じ括弧だけを出力したりすることは有効な方法です。
一方、これが汎用の出力演算子であることを意図している場合、おそらく最善の方法は、オプションではない基になる型と欠損値の空の文字列の場合と同様に、既存の値を出力することです。
The UNIX and the Echo.
ニュージャージーの土地に住んでいたのは、学者が賞賛するために遠くまで旅した公正なメイドである UNIX でした。彼女の純粋さに目がくらみ、すべての人が彼女をさらけ出そうとしました。ある人は彼女の処女の優雅さ、別の人は洗練された礼儀正しさ、さらに別の人は、はるかに豊かな土地でさえめったに達成されない厳しい仕事を遂行する彼女の機敏さを求めました。彼女は非常に心が広く、自然に順応していたので、UNIX は彼女の求婚者のうち、耐え難いほど裕福な人以外はすべて採用しました。すぐに多くの子孫が成長し、繁栄し、地の果てまで広がった。
自然そのものは、他の人間よりも熱心に UNIX に微笑んで答えた。礼儀正しいマナーをほとんど知らなかった謙虚な人々は、彼女の反響を喜んでいました。非常に正確で透き通っているため、荒野への叫び声を混乱させたのと同じ岩や森が彼女に答えることができるとはほとんど信じていませんでした。そして、従順な UNIX は、彼女が求められたことを完璧に反映する義務を負いました。せっかちなスウェインが UNIX に「何もエコーしない」と尋ねると、UNIX は無理やり口を開き、何もエコーせず、再び閉じました。
「どういう意味ですか」と若者は尋ねました。今後は、何も反響してはならないときに、決して口を開けてはなりません!」そして、UNIX は義務を負いました。
「だけど私は完璧な演奏がしたいんだ。何も反響しなくてもね」敏感な若者は懇願した。どちらも怒らせたくないので、UNIX はせっかちな若者と敏感な若者には別のことを言うことに同意しました。彼女は敏感な無を「\n」と呼んだ。
しかし今、彼女が「\n」と言ったとき、彼女は本当に何も言わなかったので、「\n」と言うために 1 回、何も言わないために 1 回、2 回口を開けなければなりませんでした。 \n は私には完全に何もないように聞こえますが、2 番目はそれを台無しにします。そのうちの 1 つを取り戻してください。そのため、不快感を我慢できなかった UNIX は、いくつかのエコーを元に戻すことに同意し、それを '\c' と呼びました。敏感な若者は、'\n' と '\c' を一緒に求めることで、無の完全な反響を聞くことができました。
しかし、彼らは、彼が音符を聞く前に、音符の過多で亡くなったと言います。
-- ダグ・マキロイ