問題タブ [proc-object]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - さらに別の proc 対ラムダの議論
メソッド内で proc を呼び出すと、proc の戻り値によって、proc を呼び出した out ブロック コンテキストからの戻りがトリガーされると思いました。私が呼び出すと、プロシージャからの戻り値があったため、実行されるべきではないtest(a_block)
ように感じます。puts "after the block"
さらに...test(a_block)
そしてtest(b_block)
まったく同じように動作します。ここに違いがあるはずだと思いましたか?
ruby - このラムダに何が起こっていますか? 誰か説明してくれませんか
これをわかりやすく説明するリンクを参照してください...
ruby - クラス変数で定義された lambda/Proc 内からインスタンス変数を使用するにはどうすればよいですか?
次のコードを書きました。
これは機能しますが、@commands
ハッシュがクラス変数の場合、ハッシュ内のコードは@people
配列を認識しません。
@commands
ハッシュをクラス変数にして、特定のオブジェクト インスタンス変数にアクセスできるようにするにはどうすればよいですか?
ruby-on-rails - Proc.new とアンパサンド記号を使用すると、Ruby の break ステートメントの動作が異なるのはなぜですか?
ブロックの break ステートメント ( The Ruby Programming Languageによる) は次のように定義されます。
これにより、ブロックがその反復子に戻り、反復子がそれを呼び出したメソッドに戻ります。
したがって、次のコードを実行すると、LocalJumpError が発生します。
次のコードはLocalJumpError をスローしません。アンパサンド記号の特徴は何ですか? アンパサンド記号は暗黙的に Proc.new を使用していませんか?
つまり、Proc.new 呼び出しをインライン化する手段としてアンパサンド記号を読み取ります。その時点で、動作は最初のコード スニペットとまったく同じになります。
免責事項: 私は言語 (ruby 1.9.2) を学習したばかりなので、参照と詳細な概要を高く評価します。
ruby - proc に self を適用するメソッド
Object
ブロックを受け取り、レシーバーをブロックに適用するメソッドを定義したいと考えています。実装は次のようになります。
これを行うための標準的な方法や、同様の使用方法を持つよく知られたライブラリは既にありますか? もしそうなら、私は車輪を再発明したくありませんでした.
オプションのブロックを受け取るメソッドがあり、ブロックがない場合return_value
はメソッド内で計算されたものを返したいのですが、ブロックがある場合はの戻り値を返したいということがよくあります。ブロックにreturn_value
適用されます。今のところ、次のような行がたくさんあります。
しかし、私は一貫して書きたい
またはさらに良いことに、 の定義をわずかに変更するとapply
、
ruby - ruby 1.9でprocを===で呼び出すことができるのはなぜですか?
この記事では、ruby 1.9でprocを呼び出す4つの方法について説明し、===はそのうちの1つです。なぜこれがこのように行われるのか、私にはまったくわかりません。===の通常の意味(2つのオブジェクトが同じオブジェクトであるかどうかを尋ねる)と何らかの関係がありますか?
ruby - メソッドの代わりにprocを使用するのはなぜですか?
私はプログラミングに不慣れであり、ルビーはそれでの私の最初の実際の実行です。ブロックを取得しますが、procは軽いメソッド/関数の概念のように見えます-なぜそれらを使用するのですか?なぜメソッドを使用しないのですか?
ご協力いただきありがとうございます。