特定の信号の現在の値を取得する方法はありますか? それとも、これは慣用的な Elm を書くときにやりたくないことですか?
2 に答える
通常コード
慣用的な Elm を書くときは、そうしたくないはずです。
また、シグナルの現在の値を取得することもできません。これは、あらゆる種類の厄介なバグが発生する可能性がある副作用関数 (プログラム実行のさまざまな時点でさまざまな値を返す) になる可能性があります。シグナルの値で何かを行うには、シグナルを でマッピングできますが、Signal.map
すでにそれを知っていると思います。
テスト
通常のコードではなくテスト目的でこれについて質問している場合は、パッケージApanatshka/elm-signal-extraで使用されている手法を使用して制限を回避し、シグナル関連の関数のテストを作成できます。(私はそのパッケージの作成者ですが、テスト システムに対する称賛は、それを考案して貢献したrgrempleに送られるべきであることに注意してください)
私が理解しているように、「現在の値」の概念は Elm では意味がありません。
確かに、Signal.map
シグナルに対する関数であれば、その関数は常に「現在の値」を受け取ると言えますが、これはあなたが意図したものではないと思います。
「現在の価値」という概念には時間が含まれます。これには、「現在の値を要求する前」と「現在の値を要求した後」を持つという考えが含まれます。これは命令型言語に見られるものですが、Elm は宣言型であるため、前と後という概念には意味がありません。