問題タブ [splat]
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.
haskell - HaskellにはPythonやRubyのようなスプラット演算子がありますか?
PythonとRuby(そして他の人もそうだと思います)。列挙可能ファイルの前に*
( "splat")を付けて、引数リストとして使用できます。たとえば、Pythonでは次のようになります。
Haskellに似たようなものはありますか?リストの長さは任意であるため、リストでは機能しないと思いますが、タプルでは機能するはずだと思います。これが私が欲しいものの例です:
私は私がすることを可能にする演算子(または関数)を探しています:
「スプラット」と呼ばれるのを見(<*>)
たことがありますが、他の言語のスプラットと同じものを指しているようには見えません。私はとにかくそれを試しました:
ruby - &method を使用できるように、匿名オブジェクトを分割するにはどうすればよいですか?
&method(:method_name)
で必要なオブジェクトが複数ある場合は、イディオムを使用したいと考えていますmethod_name
。Ruby 1.9でこれを行うことはできますか?
たとえば、私が持っている場合
コード
Ruby 1.8 では動作しますが、Ruby 1.9 では動作しません。move_file(["foo.txt", "foo_20110915.txt"])
Ruby 1.9 では、 の代わりに実行しようとしていますmove_file("foo.txt", "foo_20110915.txt")
。
正しいアリティを持つように分割するにはどうすればよいですか?
私が知っている回避策:
def move_file(old_filename, new_filename)
と置き換えますdef move_file(*arguments)
each(&method(:move_file))
と置き換えます
each{|old_filename, new_filename| move_file(old_filename, new_filename)}
ruby - 範囲と配列のルビースプラットを理解する
との違いを理解しようとしてい*(1..9)
ます[*1..9]
それらを変数に割り当てると、同じように機能します
しかし、私が直接使用しようとすると、物事は奇妙に*(1..9)
なり[*1..9]
ます。
問題の一部はオペレーターの精度にあると思いますか?しかし、何が起こっているのか正確にはわかりません。*(1..9)
使用できるものと同じものを使用できないのはなぜ[*1..9]
ですか?
ruby - Rubyのスター付き変数とは何ですか?
スター付き変数はどのようなもの*arr
ですか?
matlab - Matlab にスプラット演算子 (または同等のもの) はありますか?
配列 (実行時まで長さが不明) がある場合、配列の各要素を個別のパラメーターとして関数を呼び出す方法はありますか?
そのようです:
コンテキスト: n
-d 配列へのインデックスのリストがありますQ
。私が欲しいのは のようなものですがQ(a,b,:)
、持っているのは だけ[a,b]
です。わからないのでn
、インデックスをハードコーディングすることはできません。
c - Ruby/Inline C で未定義の数の引数を受け入れる
RubyでインラインCを使って再帰性の高い関数を書き直そうとしています。この関数は未定義の数の引数を受け入れます。つまり、Ruby では次のようになります。
次のコードを使用して、インライン C でこれを模倣しようとしています。
しかし、これはコンパイルエラーを引き起こします:
これはCでこれを達成する正しい方法ですか? もしそうなら、このエラーの原因は何ですか? そうでない場合、それはどのように行われますか?
ruby - コンストラクターでスプラット演算子を使用するのは効率的ですか?
コンストラクターでは、引数をインスタンス変数に変換したいことがよくあります。それを行う単純な方法は次のとおりです。
しかし、より簡単な方法は次のとおりです。
args
しかし、後者のコードは前者のコードでは作成されなかった余分な配列を作成しているように見えるため、コードの速度が心配でした。速度や効率の観点から、前者に固執して後者は使わない方が良いですか、それとも違いはありませんか?
higher-order-functions - 引数の位置展開バージョンを返す関数の名前はありますか?
splatter
この Python コードを検討してください。
n個の圧縮されたシーケンスにn項関数をマッピングすることは、すでに名前が付けられている可能性があるほど一般的な操作のようですが、どこでそれを見つけることができるかわかりません。それは漠然とカリー化を連想させ、私が聞いたことのない他の関連する引数中心の HOF があるようです。これが「よく知られている」関数であるかどうかは誰にもわかりますか? それについて議論するとき、私は現在、質問のタイトルで使用されているタイプの厄介な言語にこだわっています.
編集
うわー、Pythonmap
はこれを自動的に行います。あなたは書ける:
そして、それは正しいことを行い、splatter
あなたの関数を ing する手間を省きます。唯一の違いはzip
、長さが最短の引数の長さであるリストを返すのに対し、map
は短いリストを で拡張することNone
です。
ruby - Ruby の単項 * 演算子
重複の可能性:
Ruby でこの文字列に対して * 演算子が行っていること
配列をハッシュに変換する簡単な方法を探しているときに、次のコードに出くわしました (IEnumerable の .Net の ToDictionary メソッドに似ています... キーと値を任意に設定できるようにしたかったのです)。
私の質問は、前のアスタリスクは何をするのa.collect
ですか?
ちなみに、コードはhttp://justatheory.com/computers/programming/ruby/array_to_hash_one_liner.htmlから来ています
python - キーワード引数の展開を通常のキーワード引数と組み合わせることができますか?
私がやりたいことはこれです:
しかし、それはうまくいきません。辞書の展開を明示的な引数と組み合わせる方法はありますか、または明示的な引数を2番目の辞書で定義し、2つをマージして結果を展開する必要がありますか?