Qiita 7 - キータぞ、来たぞ、キータだぞー (136レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
90(2): 2025/09/27(土) 00:55:46.18 ID:B/IRYC2K(1/4)調 AAS
>>87
Rustの..は性質の良い半開区間なので、
例えばstart..endを途中のmiddleの位置で分割すると、start..middleとmiddle..endの二つに綺麗に分かれる性質も持っているよ。
そしてそのmiddleの決定算出結果が処理内容や処理状況によっては、たまたまstartと一致することも出てくる。
その時、start..middleとmiddle..endの二つは、start..startとstart..endの二つに分かれて前者は長さ0になるね。
Rustでのプログラミングでも実際にこれはよく起きるよ。
93: 2025/09/27(土) 02:17:11.42 ID:B/IRYC2K(2/4)調 AAS
>>91
区間には必ずスタート位置を伴いますね。
そこから長さが2だったり長さが1だったり長さが0だったりするわけです。
長さ0の時だけスタート位置が無いのは不自然でしょう。
>>92
良い性質を備えていてメリットがあるのは半開区間でしょう。
Rustの標準APIは区間分割split_atなどでも半開区間を前提として処理されます。
106(1): 2025/09/27(土) 21:10:34.65 ID:B/IRYC2K(3/4)調 AAS
>>103
多くの言語が半開区間を基本として扱っている理由は、半開区間だけが優れた性質を備えていてプログラミングに適しているためだよ。
半開区間だけが、start~endは長さ start - endを示し、startから長さnはstart~(start + n)になり、長さ0をstart~startで示すことができ、start~endをstart~middleとmiddle~endの2つに分割できる。
間違えた古い言語に習うことなく、半開区間をstart:endやstart..endなど簡素に記述するそれらの言語C# Go Rust Pythonなどが正しいよ。
JavaScriptもarr.slice(start, end)は半開区間であり、半開区間を基本とする言語が多数派だね。
109(1): 2025/09/27(土) 21:29:49.40 ID:B/IRYC2K(4/4)調 AAS
>>108
それら現在メジャーな各言語の、range(srart, end)もslice(start, end)もstart:endもstart..endも全て半開区間を意味しているため、間違える人はいなくて、初心者もすぐ理解して誰も困っていないよ。
0からn個がrange(0, n)
1からn個がrange(1, n + 1)
2からn個がrange(2, n + 2)
とてもわかりやすくなっているね。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.018s