これは一般的なプログラミングですが、違いがある場合はobjective-cを使用しています。値を返すメソッドと、いくつかのアクションを実行するメソッドがあるとしますが、返す値は気にしません。あたかもそれが無効であるかのようにメソッドを呼び出すでしょうか?あるいは、結果を変数に入れて、それを削除するか、それを忘れてしまいますか?このような状況があれば、あなたの意見を述べてください。一般的なプログラミング - 値を使用しない非voidメソッドの呼び出し
答えて
この一般的な例は、int型を返す、printfのです...しかし、あなたはほとんどこれを見ていない:それは無効であるかのよう
はint val = printf("Hello World");
これが.Net(など)で一般的な場合は、おそらく、コードがに違反している可能性があります。
私が無視する値を返す関数を呼び出すと、通常はテストでその動作を確認しているためです。ここではC#での例です:私は本当に戻り値の型を気にしない
[Fact]
public void StatService_should_call_StatValueRepository_for_GetPercentageValues()
{
var statValueRepository = new Mock<IStatValueRepository>();
new StatService(null, statValueRepository.Object).GetValuesOf<PercentageStatValue>();
statValueRepository.Verify(x => x.GetStatValues());
}
、私はちょうどメソッドが偽のオブジェクトで呼び出されたことを確認します。
うんちょうどメソッドを呼び出します。あなたはたぶんそれに気づかずにそれをするでしょう。代入演算子 '='は実際には値を返しますが、ほとんど使用されません。
環境によって異なります(言語、ツール、コーディング標準など)。
例えば、Cでは、値を使用せずに関数を呼び出すことは完全に可能です。 intを返すprintfのような関数では、常に実行されます。
値を使用しないと警告が表示されることがありますが、これは望ましくありません。値を変数に代入して使用しないと、未使用の変数について別の警告が出ます。この場合、解決策は、コールに(空白)をプレフィックスとして付けることによって結果をボイドにキャストすることです。
(void) my_function_returning_a_value_i_want_to_ignore().
私はそれを覚えています。 – mk12
二つの別々の問題は、実際には、ここにあります
- あなたは、戻り値を気にする必要がありますか?
- あなたはそれを使用しない変数に割り当てる必要がありますか?
#2への答えは、もちろん、それが違法となる言語で作業しているのでなければ(ターボパスカルが心に浮かんでいます)。変数を定義するだけでは、それを放棄することは絶対にありません。
最初の部分はあまり簡単ではありません。一般的に、理由値が返されます - idempotent関数の結果は関数の唯一の目的です。非冪等の場合、通常、操作が正常に完了したかどうかを示す何らかの戻りコードを表します。もちろん、例外はあります - method chainingのように。
Cでは非常に一般的ですが、本当にそうでない場所やそうでない場所もあります。
この属性を持つ関数の呼び出し元がない場合
warn_unused_result
属性は警告が発せられることになり:GCCの最近のバージョンでは、関数が戻り値をチェックせずに使用されている場合に警告を得ることができるようにfunction attributeを持っていますその戻り値を使用しないでください。これは、結果がセキュリティ上の問題であるか、reallocなどのバグであるかをチェックしない関数で役に立ちます。ライン上の警告でint fn() __attribute__ ((warn_unused_result)); int foo() { if (fn() < 0) return -1; fn(); return 0; }
結果5.
私はこれを使用前回サードパーティのコードあなたドンをコンパイルしているときに問題が発生し生成される警告をオフにする方法はありませんでした変更したくない。また、もちろん、ユーザーが実際に返された値で分かりやすいかどうかを確認する方法はありません。
- 1. C#がMVCのActionResultとして一般的な呼び出しを使用
- 2. 一般的なメソッド抽出
- 3. 一般的な方法でメソッド呼び出しを待機させる方法
- 4. railsからのシステムコマンドの呼び出し - 一般的なデザインパターン
- 5. jQueryを使わないで一般的なajax javascriptを使用してphp関数を呼び出します。
- 6. voidメソッドを呼び出す
- 7. メインドライバでvoidメソッドではないメソッドを呼び出すには?
- 8. 具体的なクラスのメソッド呼び出しを呼び出す
- 9. 一般的な静的メソッド
- 10. C#一般的なリストでEqualsメソッドを使用できない
- 11. C#スタックトレースを使用しない呼び出しメソッドの取得
- 12. 一般的なメソッド設定値T
- 13. GDI +で一般的なエラーが発生Image.Saveを呼び出す
- 14. 一般的なコンストラクタはエラーを呼び出すか?
- 15. 一般的な拡張メソッドと非汎用のリスト
- 16. voidのコンテキストでの呼び出しの呼び出しは非推奨です
- 17. 一般的なプログラミング言語の "鉄"バージョン
- 18. C#EndInvokeを使用しない非同期呼び出し?
- 19. 派生クラスの一般的なメソッドをベースに使用しないベースで
- 20. WebAPIメソッドを使用しないAJAX呼び出し
- 21. リフレクションを使用した非仮想メソッド呼び出し
- 22. 一般的な引数渡しメソッド
- 23. 2回目の一般的なメソッドを呼び出すと、オブジェクトの値が上書きされます
- 24. VOID:静的で非静的な同じボタンで呼び出されます
- 25. 使用して一般的な方法
- 26. ノード内の一般的なサーバー側とクライアント側のAPI呼び出し
- 27. 一般的なメソッド配置
- 28. Linq一般的なメソッド
- 29. 一般的な戻り値を持つ汎用メソッドの形式
- 30. 動的な一般的なメソッドT
私が知る必要があるすべてのありがとう、ありがとう。 – mk12
メソッドがオブジェクトを返す場合(ガベージコレクタはありません)それでオブジェクトが漏れてしまうのではないでしょうか? – mk12
関数がメモリ管理が必要なオブジェクトを返した場合は、おそらくキャプチャしているはずです。ほとんどの場合、戻り値を無視すると、通常はintまたはenumのint型のステータスに戻ります。そうすれば、心配する必要はありません。オブジェクトを返す何かがそれを無視したときに実際のインスタンスを考えることができますか?しかし、もしあなたがそれを取っていないなら、リークになるでしょう... – micmoo