1 名前:デフォルトの名無しさん [2022/04/17(日) 17:52:35.38 ID:KG26dcth.net] スレタイ(順番はRedMonk準拠)以外の言語もok 前スレ 次世代言語24 Go Nim Rust Swift Kotlin TypeScript https://mevius.5ch.net/test/read.cgi/tech/1647887021/
997 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:08:22.86 ID:mSfgS0Wr.net] >>977 3つともオーバーロードやデフォルト引数はほぼ関係ない話じゃん 3つめがかろうじてオーバーロードに引っかかってはいるが論点が違う
998 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:24:31.48 ID:j7veV6LL.net] シャドーイングがOKで関数オーバーロードがNGって普通は逆じゃね?
999 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:29:29.90 ID:ofPdKV5n.net] >>982 その2つがどう関係あるのか説明してくれ
1000 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:39:32.57 ID:j7veV6LL.net] シャドーイング 同じ変数名で実際は完全に別物 関数オーバーロード 同じ関数名で引数が違う でも普通は同じ働き
1001 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:50:35.85 ID:lr2wAV+c.net] 引数の型が違うだけならジェネリクスでいいし、ジェネリクスで表現できないような 引数の違いがあるような場合はそもそも同じ関数名にすべきじゃないような気がする。 オーバーロードいらないよな。
1002 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:04:20.07 ID:j7veV6LL.net] せいぜい意味不明なワードがくっついた似たり寄ったりの関数を大量に作ってくれよ
1003 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:09:55.02 ID:xRbFgwNB.net] >>984 なるほどそういう意味か イミュータブルとムーブがデフォルトだとシャドーイングNGだと命名負荷が高くなりすぎるのよ オーバーロードやデフォルト引数/オプション引数ないとメソッドの命名負荷が高くなるのと似てる
1004 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:17:07.52 ID:G0GSIi1k.net] >>982 C++/Java/C#書いてる脳だとまあすんなり同意するけど OCamlだのHaskellだの書いてる脳で読むと「お前の普通なんか知らねーよ」って感じだな
1005 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:26:34.16 ID:GOjINbNj.net] >>982 効果が真逆という結論のようです > シャドーイングは同時に存在できるのが一つだけで曖昧さがなくプログラミングにおいてプラス効果 > オーバーロードは同時に異なるものが存在できるため可読性を下げたりミスを起こす機会を生じさせてマイナス効果 確かにシャドーイングが出来ない言語では例えば price_str = "398" price_int = int(price_str) とするかミスを生みやすい動的型付けで同じ変数名priceに入れるようです シャドーイングがいかに優れているかよくわかりますね
1006 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:30:15.50 ID:j7veV6LL.net] 書き込みする前に読み返したか? ふわっふわしてるぞ
1007 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:36:51.94 ID:j7veV6LL.net] Rsutは関数オーバーロードがないから int(price_str)できない
1008 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:44:52.02 ID:d/VymnYf.net] >>991 そういう時にメソッドではない不要なグローバル関数を設けるプログラミング言語は時代遅れ もしstrに対してintに変換する関数int()を用意するならばstrのメソッドとして用意する 君には>>977 を読み直すことを勧める
1009 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:52:38.23 ID:j7veV6LL.net] Rustは同様に abs(x)ができない 他の言語ではmath.abs()とかにある x.abs()と言う不思議な感じになる -1_i32.abs() は -1になる変な言語
1010 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:54:18.35 ID:GOjINbNj.net] >>991 Rustではintが多数あるため let s = "98765"; let a: i32 = s.parse()?; let b: u64 = s.parse()?; となります どちらも同じメソッドparse()で大丈夫です あなたが使っている言語では多数のint毎に別々の変換用の関数があるのですか?
1011 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:55:48.87 ID:j7veV6LL.net] >>994 出た 愚者の?
1012 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:59:31.50 ID:bmv2finQ.net] >>993 >int(price_str)できない >Rustは同様に abs(x)ができない それはどっちもできるよ
1013 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:59:45.45 ID:4VWLMq9p.net] >>993 i32::abs(-1)
1014 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:01:03.11 ID:j7veV6LL.net] parseは多分ジェネリック実装されてて戻り値の推定からジェネリック型決めてるんだろ? そっちのほうが不気味 そのparseだってどうせトレイトで実装してんだろ?
1015 名前:デフォルトの名無しさん [2022/06/20(月) 23:02:42.38 ID:MklghZCY.net] >>985 ジェネリクスはまた別物だろ。 ライブラリ無いからシステムコール利用する機能を提供しようとする。 例えば socket(2)でいいわ。 第3引数なんて使うことないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
1016 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:03:17.12 ID:j7veV6LL.net] >>996-997 それは実質fabs()と変わらない
1017 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 64日 5時間 10分 42秒
1018 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています