1

Elixir langのMiguel Cambaチュートリアルに従っています。

次のスニペットを利用しようとするまで、すべて問題ありません。

get "/play/:story_name" do
    conn = conn.resp_content_type("テキスト/イベントストリーム")
    conn = conn.send_chunked(200)

    iterator = File.iterator!("#{conn.params[:story_name]}.txt")

    Enum.each イテレータ、fn(行) ->
      { :ok, conn } = conn.chunk "データ: #{行}\n"
      await conn, 1000, on_wake_up(&1, &2), on_time_out(&1)
    終わり
    接続
  終わり

  defp on_wake_up(arg1, arg2) do
    # 何もない
  終わり

  defp on_time_out(arg1) do
    # 何もない
  終わり

私は次のことを試しました:

接続待ち, 1000, on_wake_up&(&1, &2), on_time_out&(&1)
await conn, 1000, on_wake_up(&(&1, &2)), on_time_out(&(&1))
接続待ち、1000、on_wake_up()、on_time_out()
   終わり
    接続
  終わり

  defp on_wake_up() do
    # 何もない
  終わり

  defp on_time_out() do
    # 何もない
  終わり

イントロスペクションを実行して、それぞれ (arg1, arg2) および (arg1) に渡されたオブジェクトのタイプを確認したいと思いますが、それを達成する方法をまだ見つけようとしています..

それまでは、iex REPL で動作させることができなかったため、ショートカット アンパサンド メソッドが役立つかどうかはわかりません。私の質問は、イントロスペクション、ドキュメント、またはショートカット アンパサンド メソッドを使用して、このような場合にどのようにトラブルシューティングを行うかです。前もって感謝します。

4

2 に答える 2

5

構文が古くなっています。次のいずれかを記述する必要があります:&on_wake_up(&1, &2)または&on_wake_up/2. これらは無名関数です:

iex> is_function &is_atom/1
true
于 2014-03-08T00:12:43.573 に答える