問題タブ [structured-concurrency]
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.
swift - アクターの nonSendable プロパティを変更することが合法なのはなぜですか?
次のコードは、Swift 5.5 (ベータ) で有効です。
なぜこれが合法なのですか?犬の所有物は共有状態ですね。アクターの犬に異なるスレッドで同時にアクセスする危険はありませんか? それこそが役者が守るべきものではないでしょうか。
不思議なことに、アクターのプロパティが の代わりに でdog
宣言されている場合、アクセス中に言わざるを得なくなります。なぜそれが違いを生むのですか?犬は参照型です。その場で可変であり、またはで宣言されているかどうかに関係なく、まったく同じ方法で可変です。var
let
await
let
var
swift - ローカルの変更可能な構造体を async let バインディングに渡す
URL リクエストを作成し、それを async let バインディングに渡したいのですが、これは私には自然なことのように思えます。
エラーが発生するのはなぜですか? URLRequest
構造体であるため、関数に渡すと、関数はその構造体のコピーを取得する必要があるためrequest
、非同期呼び出しの後に変更しても、呼び出しに影響することはありません。
呼び出しが非同期で行われることはわかっていますが、呼び出しの時点でパラメーターをキャプチャし、呼び出しが行われたかのように実行を継続することを期待します (したがって、request
呼び出しの時点でのコピーが渡されましたdata(for: request)
.
let
また、次のように、別の変数を作成せず、クロージャーを使用して初期化せずにそれを行う便利な方法はありますかrequest
?