Avatar
Avatar
Kishikawa Katsumi
letを使うケースで本当に定数の場合、っていうのはあると思いますけどどうでしょう。 public struct Header { public let protocolId: UInt32 = 0x424D53FE public let structureSize: UInt16 = 64 public var creditCharge: UInt16 ... } 上記のprotocolIdstructureSizeはこのHeaderというデータ(SMB2のパケットヘッダーです)では必ず固定の値です。 また、プロパティとしてこの値を持つこと自体は合理的だと思います。パケットの構造を示しているし、Debuggerでpoしたときに表示されるなどあるので。 という場合にこのプロパティをvarにすることはないと思います。他の値が入ることはないので。
これって送信用のパケットを組み立てるときは実装上便利かなと思うんですが、受信側を実装するときはその protocolIdstructuredSizevar で実装して読み取る必要が生じませんか? また、あえて不適切な壊れたパケットを送って実装の堅牢性を確認したり、他実装のピアの動作を観察したりするような応用をしたい場合も、varにしたくなりませんかね? ソフトウェアって事前に想定していないこのような応用例などが出てきたりハックをやりたくなることがあって、そう言う時にletだと不便になるのがよくないと思っています (edited)