20/09/27 11:08:19.83 OQ0JAVEc.net
セミコロンは基本的にはあっていいけどたまに}のあとに;必要なやつとかあったりしてこれはイヤ
240:デフォルトの名無しさん
20/09/27 11:27:51.54 xq8pY9v9.net
たしかに「ASIを信用しないで」というと疑っているみたいだから「依存しないで」の方が
適切だったかも。
いずれにしても、どのスタイルガイドもプログラマの意図と異なる判断がされる危険を
挙げていて、それを防ぐためには明示的にセミコロンを記述する方が良いと謳っている。
minifyはそれこそminify時にセミコロンを補完すればいいんだから関係ないと思う。
241:デフォルトの名無しさん
20/09/27 11:40:37.55 NFiicpwR.net
>>236
Verilog は 1985から出来てたけど?
多分、もっと古い言語からあったんだろう。
242:デフォルトの名無しさん
20/09/27 12:00:44.11 4LQaG5je.net
セミコロン撤廃要望多いとは思えないんだけどRFCとか書いてる人いるのか?
243:デフォルトの名無しさん
20/09/27 12:27:31.82 MoLnvbgN.net
セミコロン書き忘れる事は多々あるけど、意図しない値が返ってとかならない(はず)なので別に困らない
それより、Docs.rsに見にくいクレートが有る方が困る、AutoとBlanket以外のShow hidden undocumented itemsを
デフォルトで展開するオプションが有れば良いのに、この議題はどっかで見たような気がする。
244:デフォルトの名無しさん
20/09/27 12:34:01.78 FTgnsV+4.net
>>241
1967のPL/Iあたりからかな?登場時期からするともっと広まってもおかしくなかった気もするけど、16/32ビットリテラルしかなかった時代には需要なかったんだろうね。verilogは何ビットでもいけるから必要だけど。
最近は128ビット型とかBigIntとかでようやく必要になってきたってことか。
245:デフォルトの名無しさん
20/09/27 12:55:24.47 ePGxxCtX.net
rustのAPI documentなんか読みづらい気がする
うまく説明できないけど
型クラスのあたりも見づらい
246:デフォルトの名無しさん
20/09/27 13:55:00.63 5NvF/cEJ.net
>>240
きちんとした手順にそったminifyだけを指して言ったわけじゃないんだが
GoogleやAirbnbのstyle guideを見ると確かにそういう意図ではないみたいだね
npmやGithubみたいにセミコロンレスのstandard style使ってるところも多いから
「メジャーどころはみんなセミコロンを明示的に書く」というのはちと言い過ぎかな
いずれにしろJSの場合は1コマンドで一瞬で切り替え可能で書く時はどっちでいいから
Rustとはかなり事情が違うと思う
247:デフォルトの名無しさん
20/09/27 14:15:05.14 5NvF/cEJ.net
>>242
探してみたらRFCあったけどCloseされてた
URLリンク(github.com)
C/C++/G#/Javaあたりから来た人はセミコロンあるのが普通だろうけど
Go/Scala/Swift/Kotlin/Ruby/Pythonだとセミコロンないのが普通なので面倒くさく感じるのよ
RFCのやり取りや↓ここの議論を見るとセミコロンが不要になる可能性はもうないね
URLリンク(internals.rust-lang.org)
248:デフォルトの名無しさん
20/09/27 15:12:03.29 FTgnsV+4.net
セミコロンレスってフォーマット的な改行と文末の改行を文脈を見て判断する必要があるから好きじゃないなぁ。
一文が複数行になりやすいビルダーパターンとかイテレータアダプタの類いが特に。
入力する側としてはほとんど無意識に打ってるから特に面倒とも感じないし。
249:デフォルトの名無しさん
20/09/27 15:18:06.12 ePGxxCtX.net
IntelliJ使えばセミコロンを殆ど見えないような色に設定できるぞ
250:デフォルトの名無しさん
20/09/27 19:00:04.17 4LQaG5je.net
典型的なbikeshed
251:デフォルトの名無しさん
20/09/28 01:45:21.81 1Vhx5XJ3.net
>>223
ocamlってセミコロン必要じゃなかったっけ?
252:デフォルトの名無しさん
20/09/28 07:53:40.34 cZtg7eSb.net
>>251
この例では必要になる場所は無い
253:デフォルトの名無しさん
20/09/28 09:58:13.64 UVos1NUC.net
docsのフロント部分は特に強いUXデザイナーがいない感じがすごくする
254:デフォルトの名無しさん
20/09/28 18:49:05.66 5HiAAmxH.net
>>251
トップレベルの分を区切るのに;;を使う
ただしletの直前、ファイルの最後、などでは省略できる
URLリンク(ocaml.org)
構文は
URLリンク(ocaml.org)
let min a b = if a < b then a else b (* letの直前だから;;省略 *)
let () = print_int (min 3 2) (* ファイルの最後だから;;省略 *)
255:デフォルトの名無しさん
20/10/01 14:03:33.62 WCPslwmj.net
slice::windowsのstrバージョンみたいなのってないのでしょうか。
ようするにある文字列に含まれる連続するn文字を頭から順に返すイテレータを作ってくれるようなやつです。
256:デフォルトの名無しさん
20/10/01 18:29:40.74 HHhjPj0U.net
>>255
ないのでVec<char>を生成してwindowsを呼ぶとか
let cs: Vec<_> = String::from("あいうえお").chars().collect();
let ws: Vec<_> = cs.windows(2).map(|v| v.iter().collect::<String>()).collect();
257:デフォルトの名無しさん
20/10/01 18:54:04.45 i8Yvf3kp.net
文字幅が可変長 (utf-8) であっても windows みたいなことをするのはそんなにコスト大きくないよね?
ふたつのポインタを一文字ずつ進めるだけなんだから O(N) で出来るはず。
258:デフォルトの名無しさん
20/10/02 09:46:31.03 D4+ZSkLl.net
アロケートなしだと、
(0..s.len()-n).map(|i| &s[i..i+n])
となるけど自分で-nとか+nとかiとかやるのめっちゃアホくさいしそのうちミスりそう
259:デフォルトの名無しさん
20/10/02 14:20:31.00 iKrdrFom.net
>>258
アロケートなしならこれでもいけるはず。utf8を食わせると死ぬけど
.as_bytes().windows(2).map(|v| std::str::from_utf8(v).unwrap())