タグ付けされた質問 「return」

returnステートメントを使用すると、実行は現在のサブルーチンを終了し、サブルーチンが呼び出された直後のコード内のポイント(復帰アドレス)から再開されます。戻りアドレスは、通常はプロセスの呼び出しスタックに、サブルーチン呼び出しを行う操作の一部として保存されます。一部のプログラミング言語では、関数が1つ以上の戻り値を指定して、関数を呼び出したコードに戻すことができます。

2
参照または値によってスマートポインター(shared_ptr)を返す方法は?
を返すメソッドを持つクラスがあるとしますshared_ptr。 参照または値によってそれを返すことの考えられる利点と欠点は何ですか? 2つの考えられる手がかり: オブジェクトの早期破壊。shared_ptrby(const)参照を返す場合、参照カウンターは増分されないため、別のコンテキスト(たとえば、別のスレッド)でスコープから外れると、オブジェクトが削除されるリスクがあります。これは正しいです?環境がシングルスレッドの場合、この状況も発生する可能性がありますか? 費用。値渡しは確かに無料ではありません。可能な限り回避する価値はありますか? みんなありがとう。


11
voidメソッド内でreturnを使用するのは悪い習慣ですか?
次のコードを想像してみてください。 void DoThis() { if (!isValid) return; DoThat(); } void DoThat() { Console.WriteLine("DoThat()"); } voidメソッド内でreturnを使用しても大丈夫ですか?パフォーマンスの低下はありますか?または、次のようなコードを作成することをお勧めします。 void DoThis() { if (isValid) { DoThat(); } }
92 c#  return  void 

7
{}ステートメントを使用して内部でreturnを呼び出すのは良い方法ですか?
私returnはusingブロック内で呼び出すことが安全/良いアプローチであることを知りたいだけです。 例のために。 using(var scope = new TransactionScope()) { // my core logic return true; // if condition met else return false; scope.Complete(); } 私たちは、最後に最も中かっこdispose()が取り消されることを知ってい ます。しかし、上記の場合returnは、指定されたスコープ(AFAIK)の外にコントロールをジャンプするので... 私scope.Complete()は呼ばれますか? スコープのdispose()メソッドについても同様です。
90 c#  return  using 


7
Rubyブロックで「return」を使用する
埋め込みスクリプト言語にRuby1.9.1を使用しようとしているので、「エンドユーザー」コードはRubyブロックに記述されます。これに関する1つの問題は、ユーザーがブロックで「return」キーワードを使用できるようにしたいので、暗黙の戻り値について心配する必要がないことです。これを念頭に置いて、これは私がやりたいことのようなものです: def thing(*args, &block) value = block.call puts "value=#{value}" end thing { return 6 * 7 } 上記の例で「return」を使用すると、LocalJumpErrorが発生します。これは、問題のブロックがProcであり、ラムダではないためです。'return'を削除するとコードは機能しますが、このシナリオでは 'return'を使用できるようにしたいと思います。これは可能ですか?ブロックをラムダに変換しようとしましたが、結果は同じです。

6
Scalaに戻る
私は初心者のscalaプログラマーであり、奇妙な振る舞いに出くわしました。 def balanceMain(elem: List[Char]): Boolean = { if (elem.isEmpty) if (count == 0) true; else false; if (elem.head == '(') balanceMain(elem.tail, open, count + 1);.... 上記の場合elem.isEmpty、基本的にはtrueを返したいと思いcount == 0ます。それ以外の場合は、falseを返します。 上記で、scalaにreturnステートメントを追加する必要がないことを読みました。だから私はreturn上記を省略しました。ただし、ブール値は返されません。returnステートメントをとして追加した場合return true。それは完全に機能します。なぜそうなのですか? また、scalaでreturnステートメントを使用することが悪い習慣と見なされるのはなぜですか
84 scala  return 

4
C ++でのコンマ演算子の動作が異なりますか?
これ(コンマ演算子に注意してください): #include <iostream> int main() { int x; x = 2, 3; std::cout << x << "\n"; return 0; } 出力2。 ただし、returnコンマ演算子とともに使用する場合は、次のようになります。 #include <iostream> int f() { return 2, 3; } int main() { int x; x = f(); std::cout << x << "\n"; return 0; } 出力3。 コンマ演算子の動作が異なるのはなぜreturnですか?



13
構文の悪い習慣を満たすためだけにreturnステートメントがありますか?
次のコードについて考えてみます。 public Object getClone(Cloneable a) throws TotallyFooException { if (a == null) { throw new TotallyFooException(); } else { try { return a.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } //cant be reached, in for syntax return null; } return null;例外がキャッチされる可能性があるため、これが必要ですが、そのような場合は、nullであるかどうかをすでに確認しているため(呼び出しているクラスがクローン作成をサポートしていることがわかっていると仮定します)、tryステートメントが失敗することはありません。 構文を満たし、コンパイルエラーを回避するために(到達しないことを説明するコメント付きで)最後に追加のreturnステートメントを挿入するのは悪い習慣ですか、それともこのようなコードを追加して追加するより良い方法がありますか? returnステートメントは不要ですか?
82 java  return  try-catch 

4
構造体の何が特別なのですか?
Cでは、関数から配列を返すことはできませんが、配列へのポインターを返すことができます。しかしstructs、配列が含まれている場合でも、関数によって返されるようにする特別な点は何ですか。 structラッピングによって次のプログラムが有効になるのはなぜですか? #include <stdio.h> struct data { char buf[256]; }; struct data Foo(const char *buf); int main(void) { struct data obj; obj = Foo("This is a sentence."); printf("%s\n", obj.buf); return 0; } struct data Foo(const char *buf) { struct data X; strcpy(X.buf, buf); return X; }

5
ジェネレーターを呼び出す関数から戻るか、それとも譲りますか?
私はジェネレーターgeneratorとそれに便利なメソッドを持っています- generate_all。 def generator(some_list): for i in some_list: yield do_something(i) def generate_all(): some_list = get_the_list() return generator(some_list) # <-- Is this supposed to be return or yield? すべきgenerate_all returnかyield?私は両方の方法のユーザーにそれを同じように使用して欲しい、すなわち for x in generate_all() 等しいはずです some_list = get_the_list() for x in generate(some_list)

2
PHP:「return」、「yield」、「yield from」の違いと、同じ関数でyieldとreturnの両方を混合することの違いは何ですか?
違いreturnとyield、私はそこに考え出しまでクリアな見えたでもあったyield fromとの両方を組み合わせることが可能returnとyield全く同じ機能で! 私の理解returnは、その後のすべてが実行されなかったということでしたね? しかしながら: function generate(): iterable { return [1, 2, 3]; } foreach (generate() as $value) { echo $value; } プロデュース: "123" しかし、以下: function generate(): iterable { return [1, 2, 3]; yield; } foreach (generate() as $value) { echo $value; } 何も生産しない!つまり、利回りが実行されるということですか? これはバグですか?
10 php  return  generator  yield 

4
main()からNULLを返す理由
CやC ++プログラムでのNULL戻り値として使用するコーダーが時々見られます。main()たとえば、次のようなものです。 #include <stdio.h> int main() { printf("HelloWorld!"); return NULL; } このコードをgccでコンパイルすると、次の警告が表示されます。 警告:キャストなしでポインタから整数を返す[-Wint-conversion] これは、マクロNULLが展開され(void*) 0、mainの戻り値がtypeであるため、妥当intです。 私が短いC ++プログラムを作るとき: #include <iostream> using namespace std; int main() { cout << "HelloWorld!"; return NULL; } そして、それをg ++でコンパイルすると、同等の警告が表示されます。 警告:NULLから非ポインター型 'int'に変換しています[-Wconversion-null] しかし、なぜ警告をスローするときのNULL戻り値として使用するのmain()でしょうか。それは単に悪いコーディングスタイルですか? 警告にもかかわらず、の戻り値としてのNULL代わりに使用する理由は何ですか?0main() これが適切であるかどうかは実装定義であり、適切である場合、なぜ実装はポインタ値を取り戻したいのでしょうか?
10 c++  c  null  return  return-value 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.