質問

いて把握に努めたC++プログラムを書いた個人的に思った背景にはプログラミング:例えば、彼が宣言した 閉鎖 クラスのた広く用いられているのは少し違うとして知られる閉鎖機能プラグインです。別のクラスと呼ばれる ガード, なんか今までが良いです。そして何らかの浄化機能が付いています。

の言語を見ること ガード はGimp用ドキュメならと同様のコードを見つけた。その他の言語ではこのような概念が存在し、著者のC++コードの場合において言及すか?

役に立ちましたか?

解決

彼はRAIIを使用していたように私にはそれが聞こえる。
クラスのコンストラクタ/デストラクタは対称的例外安全なコンテキスト内のリソースの割り当て/解放のいくつかのフォームを処理するために使用される(デストラクタが呼ばれるようにguranteedされるJavaプログラマは} {ついに呼ぶもの。)。

これは非常に一般的なC ++でイディオムと近代的なC ++で広くUEDされます。

でした。このようなコードを見ます:

void Plop()
{
     Guard   guard(lock);
     // Do lots of stuff
}

ここで、ガードがコンストラクタでロックをロックし、デストラクタでロックを開錠されます。

他のヒント

の"ガード"という言葉を使用している 複数の言語 の方法に使用されるGimpのの、その利用があるようには見えませんわ。を見ることなく、C++のコードでわかっていたの意します。

かを当てるというものによるご説明することを実装するようなウの bracket, 基本的にはよる資源の発表の場合に包まれた関数が終了る場合であっても、起きます。Pythonにも利用 finally このためにはC++です通常の清掃活動コードのデストラクタのオブジェクトのスタックです。

一般的な用語では、のガードのは、単純に継続するために、いくつかの経路に沿って実行するためにtrueに評価する必要がある構造です。このまたはそのようなものは、すべての有用なチューリング完全なプログラミング言語に存在するが、多くの場合、エンティティとして個別に名前が付いていないことかもしれないので、基本的なものです。ここではHaskellでの簡単な例があります:

f x
 | x < 0 = -x
 | otherwise = x

これは絶対値関数と等価である:ネゲート数がその正の相手を生成する負かどう。そうでない場合は、渡された同じ値を返す2つのガードがここにあります。。xがゼロ未満であるとき真であるx < 0、およびotherwise、常に真である

Haskell の Control.Monad モジュールには、 guard:

guard :: MonadPlus m => Bool -> m ()
guard breturn () もし bTrue, 、 そして mzero もし bFalse.

たとえば、各脚が 25 を超えないピタゴラス トリプルを計算するには、次のようにします。

triples = do
  a <- [1..25]
  b <- [a..25]
  c <- [b..25]
  guard (p a b c)
  return (a,b,c)
  where
    p a b c = a*a + b*b == c*c

何が起こっているかの説明については、私のブログ投稿を参照してください プログラム可能なセミコロンの説明.

コンピュータサイエンスのガードは、一般的にループ構造を継続する必要があることを示しブール式を参照してください。例えば(しゃれを許し)

for (int i = 0; i < N; ++i)
  /* stuff */

ここで、i < Nがガードされています。

それより多くの情報がなく、より徹底的にあなたの質問に答えることは困難です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top