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