スレタイ(順番はRedMonk準拠)以外の言語もok
前スレ
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1647887021/
探検
次世代言語25 TypeScript Swift Go Kotlin Rust Nim
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2022/04/17(日) 17:52:35.38ID:KG26dcth241デフォルトの名無しさん
2022/04/25(月) 02:47:04.24ID:W8ZZnspt >>240
標準ライブラリにある型とか他人のgithubリポジトリにあるライブラリにも自由にメソッド追加できるの?
ジェネリックにする必要が無いときでもジェネリックにしないとメソッドはやせないの?
Nim言語にはそもそもC++のメンバ関数みたいなのが無くて、第一引数がFoo型の関数がFoo型のメソッドの代わりみたいになっている。
標準ライブラリにある型とか他人のgithubリポジトリにあるライブラリにも自由にメソッド追加できるの?
ジェネリックにする必要が無いときでもジェネリックにしないとメソッドはやせないの?
Nim言語にはそもそもC++のメンバ関数みたいなのが無くて、第一引数がFoo型の関数がFoo型のメソッドの代わりみたいになっている。
242デフォルトの名無しさん
2022/04/25(月) 03:05:01.71ID:hhhqUz2p243デフォルトの名無しさん
2022/04/25(月) 03:21:57.26ID:FFLrto9L244デフォルトの名無しさん
2022/04/25(月) 04:39:58.47ID:W8ZZnspt UFCSがあれば引数が一個以上持つ関数であればa.f(b)ともf(a, b)とも書ける。
a.f(b)とf(a, b)の両方で書きたい場合があったらどうするの?
UFCSがなければa.f(b)で呼べるメソッドがあるときジェネリックな関数の中でf(a, b)の形式で呼ばれていたら、わざわざ新しくa.f(b)を中で呼ぶf(a, b)を定義しないといけない。
逆にf(a, b)な関数があったときに新しくメソッドを定義しなくてもa.f(b)と書ける。
それとNimだとcommand invocation syntaxがってf a, bという文法でも関数を呼べる。括弧がないので引数が複雑な式にならなければ書きやすくて読みやすいよ。
a.f(b)とf(a, b)の両方で書きたい場合があったらどうするの?
UFCSがなければa.f(b)で呼べるメソッドがあるときジェネリックな関数の中でf(a, b)の形式で呼ばれていたら、わざわざ新しくa.f(b)を中で呼ぶf(a, b)を定義しないといけない。
逆にf(a, b)な関数があったときに新しくメソッドを定義しなくてもa.f(b)と書ける。
それとNimだとcommand invocation syntaxがってf a, bという文法でも関数を呼べる。括弧がないので引数が複雑な式にならなければ書きやすくて読みやすいよ。
245デフォルトの名無しさん
2022/04/25(月) 05:29:11.29ID:d+UJIvmE246デフォルトの名無しさん
2022/04/25(月) 08:12:23.26ID:7gaqSdm4 >>225
js/tsなら言語仕様拡張せんでも関数合成だろう。
js/tsなら言語仕様拡張せんでも関数合成だろう。
247デフォルトの名無しさん
2022/04/25(月) 08:55:43.85ID:VjXpH6fC248デフォルトの名無しさん
2022/04/25(月) 11:59:33.54ID:QEeStXPn >>241
既存の型にもメソッド追加できるよ
例えばJavaScriptならこんな感じ
// 文字列にhello()を追加
String.prototype.hello = function() {
console.log(`Hello ${this}!`);
};
// 数値にhello()を追加
Number.prototype.hello = function() {
console.log(`Hello ${this}!`);
};
"abc".hello();
// 123.hello(); // 文法エラー
let num = 123;
num.hello();
既存の型にもメソッド追加できるよ
例えばJavaScriptならこんな感じ
// 文字列にhello()を追加
String.prototype.hello = function() {
console.log(`Hello ${this}!`);
};
// 数値にhello()を追加
Number.prototype.hello = function() {
console.log(`Hello ${this}!`);
};
"abc".hello();
// 123.hello(); // 文法エラー
let num = 123;
num.hello();
249デフォルトの名無しさん
2022/04/25(月) 12:16:38.60ID:VSqj5wTk Rustではジェネリックにメソッド追加することも可能
// メソッドhello()を持つトレイトHelloを宣言
trait Hello {
fn hello(&self);
}
use std::fmt::Display;
// 表示可能トレイトDisplayを満たす全ての型に対してhello()を実装
impl<T: Display> Hello for T {
fn hello(&self) {
println!("Hello {self}!");
}
}
fn main() {
"abc".hello();
123.hello();
}
// メソッドhello()を持つトレイトHelloを宣言
trait Hello {
fn hello(&self);
}
use std::fmt::Display;
// 表示可能トレイトDisplayを満たす全ての型に対してhello()を実装
impl<T: Display> Hello for T {
fn hello(&self) {
println!("Hello {self}!");
}
}
fn main() {
"abc".hello();
123.hello();
}
250デフォルトの名無しさん
2022/04/25(月) 12:41:05.03ID:GF+5hMbb 既存の型へのメソッド追加はプロトタイプ汚染とか言われて忌避されてるよね
他モジュールへの影響の出ない形でメソッド追加する手法が望ましい
他モジュールへの影響の出ない形でメソッド追加する手法が望ましい
251デフォルトの名無しさん
2022/04/25(月) 12:53:37.30ID:BAh3CRfm >>250
JavaScriptはプロトタイプがグローバルに書き換わり全てのモジュールに適用されるためだな
一方でRustはメソッドを追加するにはトレイトを用意することが必要、そしてトレイトが宣言/useされている空間のみ有効、なので汚染が生じず安全
JavaScriptはプロトタイプがグローバルに書き換わり全てのモジュールに適用されるためだな
一方でRustはメソッドを追加するにはトレイトを用意することが必要、そしてトレイトが宣言/useされている空間のみ有効、なので汚染が生じず安全
252デフォルトの名無しさん
2022/04/25(月) 13:16:10.20ID:GF+5hMbb >>251
型を定義した以外のcrateでメソッドを追加するためにはtraitが必要、が正しいかな
メソッドを追加するためにはtraitなしのimplを書く方法もあるが、これをできるのは型を定義したcrateだけに制限されているので他crateで定義を追加して汚染することはない
とまあRustの事情は知ってるんだけど、他の言語ではどうなってるのかが知りたかった
型を定義した以外のcrateでメソッドを追加するためにはtraitが必要、が正しいかな
メソッドを追加するためにはtraitなしのimplを書く方法もあるが、これをできるのは型を定義したcrateだけに制限されているので他crateで定義を追加して汚染することはない
とまあRustの事情は知ってるんだけど、他の言語ではどうなってるのかが知りたかった
253デフォルトの名無しさん
2022/04/25(月) 13:16:45.41ID:BiVUGBJZ 知ってるけど今そんな話してるんじゃないんだわ
254デフォルトの名無しさん
2022/04/25(月) 13:22:02.11ID:UiNQmXr4 JavaScriptで脆弱性を生みまくってさんざん問題視されたんだから、いまどきそんな汚染が起こる新しい言語は一つもないよ
255デフォルトの名無しさん
2022/04/25(月) 13:30:18.88ID:5sWL1sIQ256デフォルトの名無しさん
2022/04/25(月) 13:46:50.81ID:BiVUGBJZ 発端になったD言語のUFCSハブられてるのなんで?
257デフォルトの名無しさん
2022/04/25(月) 13:58:52.24ID:TLzTt+1G258デフォルトの名無しさん
2022/04/25(月) 14:21:14.88ID:UiNQmXr4 >>256
nimには採用されてるし、調べてみるとC++にも導入の提案がされてるみたいだから、それほどハブられてないのでは?
Bjarne Stroustrupの提案: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4174.pdf
Herb Sutterの提案: https://isocpp.org/files/papers/N4165.pdf
nimには採用されてるし、調べてみるとC++にも導入の提案がされてるみたいだから、それほどハブられてないのでは?
Bjarne Stroustrupの提案: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4174.pdf
Herb Sutterの提案: https://isocpp.org/files/papers/N4165.pdf
259デフォルトの名無しさん
2022/04/25(月) 14:24:50.73ID:S1pQjSZ5 UFCSはメソッド名空間の汚染
だから採用しないのが正解
だから採用しないのが正解
260デフォルトの名無しさん
2022/04/25(月) 15:13:03.71ID:B7syBDSL 結局メソッド生やしたいんじゃなくてプライベートメンバにアクセスしたいだけなんだよな
261デフォルトの名無しさん
2022/04/25(月) 15:22:37.45ID:sJr09n4H262デフォルトの名無しさん
2022/04/25(月) 15:28:02.41ID:VN4zR5UM263デフォルトの名無しさん
2022/04/25(月) 15:36:09.96ID:3MmiqOlF いやトレイトで似たようなメソッドがたくさんぶら下がって汚染されてますよね?それが更にハードルが上がる一因になってる
264デフォルトの名無しさん
2022/04/25(月) 15:46:00.36ID:ZqKc7K5J265デフォルトの名無しさん
2022/04/25(月) 15:55:06.48ID:UiNQmXr4266デフォルトの名無しさん
2022/04/25(月) 16:00:14.18ID:xSu4vg9o UFCSは強制汚染
関数として必要なだけなのにメソッド名空間を汚染
メソッドとして必要なだけなのに関数名空間を汚染
だから採用する言語がほとんどない
関数として必要なだけなのにメソッド名空間を汚染
メソッドとして必要なだけなのに関数名空間を汚染
だから採用する言語がほとんどない
267デフォルトの名無しさん
2022/04/25(月) 16:01:50.20ID:3MmiqOlF >>264
イヤイヤ、そんなのほとんどの言語でimportやincludeと同じで更に言えば、use std::io::prelude::*;みたいにRustでもPythonでも
誤ったやり方とされてるワイルドカードだって使えるんだから一緒でしょ。明確に言うなら”汚染は起きず”ではなく、汚染は当然ながら
useするのだから起きている。無意味にuseしない*を使わないというのは言語仕様や特性じゃなく規約だよ
イヤイヤ、そんなのほとんどの言語でimportやincludeと同じで更に言えば、use std::io::prelude::*;みたいにRustでもPythonでも
誤ったやり方とされてるワイルドカードだって使えるんだから一緒でしょ。明確に言うなら”汚染は起きず”ではなく、汚染は当然ながら
useするのだから起きている。無意味にuseしない*を使わないというのは言語仕様や特性じゃなく規約だよ
268デフォルトの名無しさん
2022/04/25(月) 16:08:08.42ID:UiNQmXr4 スコープやシンボルが限定されてるのに汚染と呼ぶのはおかしい
269デフォルトの名無しさん
2022/04/25(月) 16:09:49.70ID:Ld005CpI270デフォルトの名無しさん
2022/04/25(月) 16:18:54.63ID:EM9X2zpO >>264
ほんとRustニワカ嫌いだわ、「明示的にuse Traitしない限り」なんて良くそんな詭弁が言えるわ。どう考えても一緒でしょう
だからPythonだってas構文使えますし、D言語だってimport std.stdio : writeln, writefln;で選択的インポートできるでしょw
ほんとRustニワカ嫌いだわ、「明示的にuse Traitしない限り」なんて良くそんな詭弁が言えるわ。どう考えても一緒でしょう
だからPythonだってas構文使えますし、D言語だってimport std.stdio : writeln, writefln;で選択的インポートできるでしょw
271デフォルトの名無しさん
2022/04/25(月) 16:21:12.54ID:PqJDEf6z Rust聖戦士がワラワラ
他の言語のスタイルはすべてアンチパターン
他の言語のスタイルはすべてアンチパターン
272デフォルトの名無しさん
2022/04/25(月) 16:23:34.31ID:NxLuUrhR >>269
Underscore importなんてRustがトレイトのシンボルが別のシンボルと競合する可能性がある場合、つまりRustが破綻しないように
特別にあるだけで、汚染の低下のための機能ではないぜ。ここで汚染といってるのは無暗にメソッドが追加される事。
(回避策が仮に無ければ)衝突することはもはや、言語的な欠陥だ
Underscore importなんてRustがトレイトのシンボルが別のシンボルと競合する可能性がある場合、つまりRustが破綻しないように
特別にあるだけで、汚染の低下のための機能ではないぜ。ここで汚染といってるのは無暗にメソッドが追加される事。
(回避策が仮に無ければ)衝突することはもはや、言語的な欠陥だ
273デフォルトの名無しさん
2022/04/25(月) 16:27:35.43ID:KFrD7nO2 使われる空間に名前が載ることを汚染とは言わない
使わない空間に名前が載ることを汚染と言う
UFCSが汚染と言われる理由は
関数として使いメソッドとして使わなくてもメソッド名空間に載り
メソッドとして使い関数として使わなくても関数名空間に載るためだと考えられる
使わない空間に名前が載ることを汚染と言う
UFCSが汚染と言われる理由は
関数として使いメソッドとして使わなくてもメソッド名空間に載り
メソッドとして使い関数として使わなくても関数名空間に載るためだと考えられる
274デフォルトの名無しさん
2022/04/25(月) 16:34:56.30ID:NxLuUrhR >>273
Rustだって、fn中にuse出来るわけでそれはほかの言語でも同じ。そう言う事はあまりしないけども、多くの言語で同じように”使われる空間”だけに載る
Rustだって、fn中にuse出来るわけでそれはほかの言語でも同じ。そう言う事はあまりしないけども、多くの言語で同じように”使われる空間”だけに載る
275デフォルトの名無しさん
2022/04/25(月) 16:36:52.48ID:UB00PZWU RustがUFCSを採用しないのは単に、パーサーをオブジェクトを先して作り直すと(C言語にわざと似せてる)見た目が変わってしまうし
パーサーに手を入れるということは苦労してきたコンパイル速度が低下してしまう恐れがあるという事だけ
パーサーに手を入れるということは苦労してきたコンパイル速度が低下してしまう恐れがあるという事だけ
276デフォルトの名無しさん
2022/04/25(月) 16:37:55.90ID:ZcyGlXND277デフォルトの名無しさん
2022/04/25(月) 16:39:18.63ID:Ktg4GXmX278デフォルトの名無しさん
2022/04/25(月) 16:40:19.19ID:WnCW0ZaS そもそもUFCSは汚染だなんてここ以外で聞いたことがないんだけど
279デフォルトの名無しさん
2022/04/25(月) 16:44:16.36ID:LpKzCT90 >>273
UFCSとやらはムダに汚染しまくるクソな機能だな
UFCSとやらはムダに汚染しまくるクソな機能だな
280デフォルトの名無しさん
2022/04/25(月) 16:46:59.96ID:EmEbSMmo Rustの宣伝はこんな匿名掲示板じゃなくQiitaとかに書いてほしいな
その反応で実際に正論なのか暴論なのか明らかになるだろう
その反応で実際に正論なのか暴論なのか明らかになるだろう
281デフォルトの名無しさん
2022/04/25(月) 16:49:37.58ID:ZJMHR0C4 UFCSという汚染機能をサポートしているプログラミング言語はDとNim
埋もれた言語となったのも当然の結果
埋もれた言語となったのも当然の結果
282デフォルトの名無しさん
2022/04/25(月) 16:50:47.89ID:WnCW0ZaS 汚染だとか書いてるのは全部ガイジだな
283デフォルトの名無しさん
2022/04/25(月) 17:00:21.10ID:AtUdeTix ほとんど全ての言語がUFCSを採用していない理由はメリットが無いからだと思う
そして無条件に二つの名前空間に登録されてしまうことを汚染と呼ぶかどうかは置いておくとしても本末転倒の方法かなとは感じる
そして無条件に二つの名前空間に登録されてしまうことを汚染と呼ぶかどうかは置いておくとしても本末転倒の方法かなとは感じる
284デフォルトの名無しさん
2022/04/25(月) 17:01:11.49ID:XBfmr4Gp >>275
さらにRustは実装としてUFCSを別の意味で誤って使っていた過去がある、::パス構文で混乱を引き起こして曖昧性が起きた。2017年頃でそんなに優れた開発者がおらずなんとなく実装していた時期だな、いつもはRustは論文がしっかりしてると嘯くのに
さらにRustは実装としてUFCSを別の意味で誤って使っていた過去がある、::パス構文で混乱を引き起こして曖昧性が起きた。2017年頃でそんなに優れた開発者がおらずなんとなく実装していた時期だな、いつもはRustは論文がしっかりしてると嘯くのに
285デフォルトの名無しさん
2022/04/25(月) 17:02:36.89ID:+vVlR4Vp やっぱりUFCSは悪だな
286デフォルトの名無しさん
2022/04/25(月) 17:12:43.76ID:PqJDEf6z 次スレはもうRust消そう
話にならん
話にならん
287デフォルトの名無しさん
2022/04/25(月) 17:19:42.27ID:o63SmoRM288デフォルトの名無しさん
2022/04/25(月) 17:26:05.13ID:PqJDEf6z どっちでもいいよ
信者だろうがアンチだろうがあらゆる話題がRustとの比較になって宗教戦争化するのが馬鹿馬鹿しすぎる
Rustの話題はスレ違いなのでRust叩きもスレ違いとする、問題解決
信者だろうがアンチだろうがあらゆる話題がRustとの比較になって宗教戦争化するのが馬鹿馬鹿しすぎる
Rustの話題はスレ違いなのでRust叩きもスレ違いとする、問題解決
289デフォルトの名無しさん
2022/04/25(月) 17:26:35.89ID:4xqZqLmv ほぼ全ての言語がUFCSを採用していない
しかしUFCSが叩かれるとなぜか必死にRustを攻撃してくれる
一石二鳥と言えるだろう
しかしUFCSが叩かれるとなぜか必死にRustを攻撃してくれる
一石二鳥と言えるだろう
290デフォルトの名無しさん
2022/04/25(月) 17:38:49.59ID:63+wFQ6i C++委員会での議論でもメンバ関数と非メンバ関数で衝突したときにどう解決するかで割れて否決されたみたいだし、なかなか難しそうだね
291デフォルトの名無しさん
2022/04/25(月) 17:51:06.52ID:BSwMXBpD 考えてみたがUFCSは完全に不要っぽい
まずメソッドとして使いたいものは最初からメソッドとして書けばよい
次に外部の関数をどうしてもメソッドとして使いたいならばその外部関数を呼び出すメソッドを追加すればよい
まずメソッドとして使いたいものは最初からメソッドとして書けばよい
次に外部の関数をどうしてもメソッドとして使いたいならばその外部関数を呼び出すメソッドを追加すればよい
292デフォルトの名無しさん
2022/04/25(月) 17:53:13.68ID:VVkmIp+6 衝突が問題ならUFCSの使用は記号などを使って明示したらいいんじゃないかな?
293デフォルトの名無しさん
2022/04/25(月) 18:02:36.22ID:DhJCopPa 「Rustを攻撃」ってどっちも同じでしょって言ってるだけなのに、このように攻撃を受けたと勘違いするんだから、正常な議論なんて出来ない。
UFCSについて難癖付けてるだけじゃん、個人的には別に必要ないと思うし、仮にあったら便利だとも思うが。コンパイル時間が増えるのは許容できない
「Rustのアンチ側」なんて言い出すクズどもとまともな話なんて出来るわけない。
こんな奴らばっかり増やしてもRustの普及を妨げてると思うんだけど?
UFCSについて難癖付けてるだけじゃん、個人的には別に必要ないと思うし、仮にあったら便利だとも思うが。コンパイル時間が増えるのは許容できない
「Rustのアンチ側」なんて言い出すクズどもとまともな話なんて出来るわけない。
こんな奴らばっかり増やしてもRustの普及を妨げてると思うんだけど?
294デフォルトの名無しさん
2022/04/25(月) 18:07:17.52ID:3bYGoG0a スレ読んだけど
汚染でも何でもなくRust特有の問題でもないことをRustは汚染だと延々と叩いてるのは異常に感じた
汚染でも何でもなくRust特有の問題でもないことをRustは汚染だと延々と叩いてるのは異常に感じた
295デフォルトの名無しさん
2022/04/25(月) 18:08:46.62ID:sJroCDvH 今のところUFCSがある言語と外部のデータ型に対してメソッドを追加できない言語、メソッドを追加できる言語とできない言語のそれぞれは前者が勝手で勝るけど、前者同士では好みとか実現手法の違い程度の話のように感じてる
UFCSも結局モジュール単位で環境が分離されている事が殆どのようだし、どちらかじゃないとできない事も、どちらかだと発生する致命的な不都合も見えてこない
一見機能が不要に見えても、その採用理由が他の要素に起因してたりもするだろうし、その辺私はUFCS採用言語のことを詳しく知らないのでなんとも言えないな
UFCSも結局モジュール単位で環境が分離されている事が殆どのようだし、どちらかじゃないとできない事も、どちらかだと発生する致命的な不都合も見えてこない
一見機能が不要に見えても、その採用理由が他の要素に起因してたりもするだろうし、その辺私はUFCS採用言語のことを詳しく知らないのでなんとも言えないな
296デフォルトの名無しさん
2022/04/25(月) 18:09:37.23ID:9QpKK4x8 >>292
C++での議論では当然そういう案含めていろいろ提案されたけど、結局どれも一長一短で委員会での合意には至らなかったみたい
一人で作ってる言語なら作者の好みでサクッと入れられちゃうんだろうけどね
C++での議論では当然そういう案含めていろいろ提案されたけど、結局どれも一長一短で委員会での合意には至らなかったみたい
一人で作ってる言語なら作者の好みでサクッと入れられちゃうんだろうけどね
297デフォルトの名無しさん
2022/04/25(月) 18:11:19.66ID:DhJCopPa 汚染と言わなくても、Rustがuseで似たようなメソッドがたくさん出てくるのは本当でしょ、UFCSにしてもそれはイコールで何ら変わらんわ
なんでこいつらマトモに話すら出来ないの?コーディング能力を持ってるんだろうけど、コミュニケーション能力はゼロに近い
なんでこいつらマトモに話すら出来ないの?コーディング能力を持ってるんだろうけど、コミュニケーション能力はゼロに近い
298デフォルトの名無しさん
2022/04/25(月) 18:11:26.99ID:VVkmIp+6 メソッドが動詞ならUFCSでは関係が逆になるんだよね
英語圏の人はどう思ってるんだろ
英語圏の人はどう思ってるんだろ
299デフォルトの名無しさん
2022/04/25(月) 18:15:08.57ID:Xt13Fv0a >>298
OSV言語の自然言語に近くなるから、オブジェクトが先に来るのは利点として受け止められてる。でも所詮はシンタックスシュガーの何者でもない
OSV言語の自然言語に近くなるから、オブジェクトが先に来るのは利点として受け止められてる。でも所詮はシンタックスシュガーの何者でもない
300デフォルトの名無しさん
2022/04/25(月) 18:16:12.91ID:TDNc/5Gc301デフォルトの名無しさん
2022/04/25(月) 18:19:11.55ID:VVkmIp+6 C#にも拡張メソッドと言う名前でほぼ同じ機能が使えるけどそっちは拡張メソッドオンリーで使う前提で作られてる
302デフォルトの名無しさん
2022/04/25(月) 18:23:57.49ID:WnCW0ZaS 似たような機能はいろんな言語にあるよね
303デフォルトの名無しさん
2022/04/25(月) 18:31:31.86ID:5qzMTDWR >>299
英語はOSVじゃなくSVOな?OSVになることもあるけど、そして世界の自然言語の主流は日本語と同じくSOVが40%
参考としてスター・ウォーズのジェダイ・マスター:ヨーダは、このOSV語順で話す。
英語はOSVじゃなくSVOな?OSVになることもあるけど、そして世界の自然言語の主流は日本語と同じくSOVが40%
参考としてスター・ウォーズのジェダイ・マスター:ヨーダは、このOSV語順で話す。
304デフォルトの名無しさん
2022/04/25(月) 18:34:58.90ID:VVkmIp+6 var s=copy(section);
paste(s);
みたいなのがあって
これを
paste(copy(section)):
とするより
section.copy().paste();
のほうが受け入れ易いってことだよね?
paste(s);
みたいなのがあって
これを
paste(copy(section)):
とするより
section.copy().paste();
のほうが受け入れ易いってことだよね?
305デフォルトの名無しさん
2022/04/25(月) 18:42:40.14ID:pOd33Olh >>304
最初からメソッドとして書けば済む
最初からメソッドとして書けば済む
306デフォルトの名無しさん
2022/04/25(月) 19:05:29.73ID:8yiD5uPx Methods! You will be written first, but many are not.
307デフォルトの名無しさん
2022/04/25(月) 19:07:02.73ID:tSjXYtJn >>305
ところがどっこい var sのsはメソッドを生やせないstring型だ
常にメソッドを生やせるとは限らないし、元のクラスに必要以上の仕事を増やさないためにから拡張メソッドという概念があるんだよ
ところがどっこい var sのsはメソッドを生やせないstring型だ
常にメソッドを生やせるとは限らないし、元のクラスに必要以上の仕事を増やさないためにから拡張メソッドという概念があるんだよ
308デフォルトの名無しさん
2022/04/25(月) 19:15:14.85ID:VVkmIp+6 スコープでuse出来て局所ごとにsection.print()の意味が変わる場合も便利だと感じる?
309デフォルトの名無しさん
2022/04/25(月) 19:28:32.34ID:WnCW0ZaS メソッドじゃなくて関数や変数でも、スコープごとに意味が変わりうるのは当然のこと
310デフォルトの名無しさん
2022/04/25(月) 19:29:22.19ID:9QpKK4x8 拡張メソッドが欲しいのはまぁ分かるんだけど
UFCSまでいくと普通の関数のつもりが意図せずメソッド呼び出しできてしまう、みたいなデメリットの方が大きくなる気がするなぁ
UFCSまでいくと普通の関数のつもりが意図せずメソッド呼び出しできてしまう、みたいなデメリットの方が大きくなる気がするなぁ
311デフォルトの名無しさん
2022/04/25(月) 19:33:06.80ID:m1bq2XCo なぜRustが叩かれていたのかようやく理解できた
Rustでは基本の型にも外部の型にもメソッドを追加できるわけか
そのためメソッドを自由に追加できない言語の人が逆恨みで叩いていたと
Rustでは基本の型にも外部の型にもメソッドを追加できるわけか
そのためメソッドを自由に追加できない言語の人が逆恨みで叩いていたと
312デフォルトの名無しさん
2022/04/25(月) 19:35:49.53ID:VVkmIp+6 "test".print();が局所ごとに意味が変わると気持ち悪い
313デフォルトの名無しさん
2022/04/25(月) 19:37:37.15ID:3TQSNLUR >>266
Nimだと「メソッド名空間」自体が無いから、そんな議論をするのは無駄だね。
Nimだと「メソッド名空間」自体が無いから、そんな議論をするのは無駄だね。
314デフォルトの名無しさん
2022/04/25(月) 19:43:06.53ID:DNOUKEV3 >>312
え?logging.rsに"test".print();と書いてあるのと、printer.rsに"test".print();で意味が変わるのはなんも関係無くねえ?
つーか普通に関数でprint("test")だのsaveだの、getだの散々やってるじゃん。気持ち(悪い)の問題なんだろうけどさ
え?logging.rsに"test".print();と書いてあるのと、printer.rsに"test".print();で意味が変わるのはなんも関係無くねえ?
つーか普通に関数でprint("test")だのsaveだの、getだの散々やってるじゃん。気持ち(悪い)の問題なんだろうけどさ
315デフォルトの名無しさん
2022/04/25(月) 19:46:57.59ID:3TQSNLUR >>311
それはNimも同様。
むしろNimの方がメソッドと関数を統一しているから(記法が違うだけ)、より自然に拡張できる。
>ぜRustが叩かれていたのかようやく理解できた
>逆恨みで叩いていたと
こういうアホなことを言う狂信者ばかりだからだよ。
それはNimも同様。
むしろNimの方がメソッドと関数を統一しているから(記法が違うだけ)、より自然に拡張できる。
>ぜRustが叩かれていたのかようやく理解できた
>逆恨みで叩いていたと
こういうアホなことを言う狂信者ばかりだからだよ。
316デフォルトの名無しさん
2022/04/25(月) 19:56:02.27ID:W8ZZnspt RustのメソッドとかC++のメンバ関数のような特定の型だったりトレイトに束縛された関数のようなものがNimにはなくて、自由関数だけがある。
だからNimからUFCSをとったらC言語のように全ての関数をfoo(x, y, z)って書かないといけなくなっちゃう。
UFCSがあるおかげでどんな関数もx.f(y,z)だったりf(x, y, z)とか自由に書ける。
UFCSで関数がメソッドになるとプライベート変数/メソッドにアクセスできちゃうって勘違いしている人がいるかもしれないけどNimではそれは起きない。
C++のメンバ変数に相当するものや関数のアクセス権はモジュール外にそれを公開するかしないかのどちらかしかない。
だからNimからUFCSをとったらC言語のように全ての関数をfoo(x, y, z)って書かないといけなくなっちゃう。
UFCSがあるおかげでどんな関数もx.f(y,z)だったりf(x, y, z)とか自由に書ける。
UFCSで関数がメソッドになるとプライベート変数/メソッドにアクセスできちゃうって勘違いしている人がいるかもしれないけどNimではそれは起きない。
C++のメンバ変数に相当するものや関数のアクセス権はモジュール外にそれを公開するかしないかのどちらかしかない。
317デフォルトの名無しさん
2022/04/25(月) 19:57:52.87ID:s4irQrJG >>315
Nimでも自由にメソッドを追加できるならばUFCS必要なくね??
Nimでも自由にメソッドを追加できるならばUFCS必要なくね??
318デフォルトの名無しさん
2022/04/25(月) 19:59:13.38ID:9XvEg3RG >>314
逆にprint_to_printer()とか print_to_consoleとか書いてあったら発狂するかもしれんわ
一番使うdebug_assert_eqとかヤメテほしい・・・、あと帰ってくる正式な型名が異様に長くなるのもC++の悪いところを引き継い出るような感じがする
逆にprint_to_printer()とか print_to_consoleとか書いてあったら発狂するかもしれんわ
一番使うdebug_assert_eqとかヤメテほしい・・・、あと帰ってくる正式な型名が異様に長くなるのもC++の悪いところを引き継い出るような感じがする
319デフォルトの名無しさん
2022/04/25(月) 20:05:33.97ID:4uqCvk4R320デフォルトの名無しさん
2022/04/25(月) 20:06:59.77ID:0BSsoGgf std::iter::emptyは名前空間を汚染するので使ってはいけません
アホか
アホか
321デフォルトの名無しさん
2022/04/25(月) 20:09:08.19ID:9XvEg3RG >>319
1つも調べもせんのな、自由関数だけじゃなくmethodもある。つーかおまえRust使うの止めてJavaやってろ、まじ迷惑
1つも調べもせんのな、自由関数だけじゃなくmethodもある。つーかおまえRust使うの止めてJavaやってろ、まじ迷惑
322デフォルトの名無しさん
2022/04/25(月) 20:09:29.47ID:VVkmIp+6 グローバル関数じゃなくて?
323デフォルトの名無しさん
2022/04/25(月) 20:10:31.91ID:3TQSNLUR324デフォルトの名無しさん
2022/04/25(月) 20:13:13.14ID:xcxOK/uY やはり逆恨みで無関係なRust叩きやってる説が正しいかもしれん
Rustが無関係な状況でも>>321のように唐突にRustを出してくる
Rustが無関係な状況でも>>321のように唐突にRustを出してくる
325デフォルトの名無しさん
2022/04/25(月) 20:21:15.47ID:51f23UG1 逆恨みだの、攻撃だの、ずーーとこんな事言ってる奴いるけど完全なびょーきだと思う。名前空間が汚染されないという言語はお前の中で具体的に何?
326デフォルトの名無しさん
2022/04/25(月) 20:21:37.03ID:5gWGwAdH もうケンカしてる人らが最強次世代言語作れば
327デフォルトの名無しさん
2022/04/25(月) 20:23:23.46ID:PqJDEf6z 逆恨みとか、自我と言語が密結合していない限り出ない言葉だよな
用途目的に応じて言語を使い分ければ良いのに
つまりそういうことだ
用途目的に応じて言語を使い分ければ良いのに
つまりそういうことだ
328デフォルトの名無しさん
2022/04/25(月) 20:26:24.56ID:bFDhmU1p おそらくNimの人がずっとRustを仮想敵にでもしてるのかもな
だからNimに不利っぽい書き込みがあるとRustの話がどこにもなくても無意識にRustを叩いてしまってるのかもな
だからNimに不利っぽい書き込みがあるとRustの話がどこにもなくても無意識にRustを叩いてしまってるのかもな
329デフォルトの名無しさん
2022/04/25(月) 20:26:38.57ID:WnCW0ZaS ローカルのスコープしか影響しないのに、わざわさわ汚染とか言うの意味わからん
紛らわしいからやめろ
紛らわしいからやめろ
330デフォルトの名無しさん
2022/04/25(月) 20:27:48.66ID:WnCW0ZaS > わざわさわ汚染
タイポしてた
わざわざ汚染
タイポしてた
わざわざ汚染
331デフォルトの名無しさん
2022/04/25(月) 20:29:25.14ID:3QooPOGs 例えば新しい言語が出来て人気を博したら、RustにもNimにもDにもSwiftなどにも存在しない機能や、シンタックスシュガーになるわけで
それを指摘したら、逆恨みだの、攻撃だの、アンチだの言いだしたらこのスレはマジ必要ない。
なんで無いのか考察を言ったり、コンパイル時間への影響とか、現行の構文が大きく変わってしまうとかそういうのを述べるならまだしも
UFCSが汚染だとキチガイのように書いてる。マジこんなやつ迷惑だろw
それを指摘したら、逆恨みだの、攻撃だの、アンチだの言いだしたらこのスレはマジ必要ない。
なんで無いのか考察を言ったり、コンパイル時間への影響とか、現行の構文が大きく変わってしまうとかそういうのを述べるならまだしも
UFCSが汚染だとキチガイのように書いてる。マジこんなやつ迷惑だろw
332デフォルトの名無しさん
2022/04/25(月) 20:34:31.02ID:fIAeID6q このスレを「汚染」で検索してそれら書き込みを見るとプログラミング言語名の最多登場がRust
なぜRustを汚染と叩く書き込みが多いのか不思議
なぜRustを汚染と叩く書き込みが多いのか不思議
333デフォルトの名無しさん
2022/04/25(月) 20:35:18.96ID:PqJDEf6z334デフォルトの名無しさん
2022/04/25(月) 20:38:37.94ID:kDkXz7wX335デフォルトの名無しさん
2022/04/25(月) 20:48:57.83ID:VVkmIp+6 rustは錆なんだから汚染ぐらいでどうこう言うのもちょっと
336デフォルトの名無しさん
2022/04/25(月) 20:54:23.26ID:GhM9BPSc Rustに対してとにかく言いがかりつけてるアレな人が前からおるやん
今回もそれだろ
有名人が叩かれる有名税みたいなもんや
今回もそれだろ
有名人が叩かれる有名税みたいなもんや
337デフォルトの名無しさん
2022/04/25(月) 21:10:54.21ID:EYilt5eX いーや一番言いがかりで汚染されてるのはこんスレとロシアだと思いますわ。反枠&陰謀論!病院池
338デフォルトの名無しさん
2022/04/25(月) 21:27:42.00ID:l9I/osPN 有名税か
逆恨みやストレス発散でバッシングする連中多いもんな
逆恨みやストレス発散でバッシングする連中多いもんな
339デフォルトの名無しさん
2022/04/25(月) 21:47:49.04ID:iMu4Hfqd340デフォルトの名無しさん
2022/04/25(月) 21:58:12.43ID:Hqs3zbo6 ケンカはやめて><
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★2 [七波羅探題★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎますね」 [冬月記者★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は [蚤の市★]
- 【速報】年収の壁の自民案判明、26年は168万円 [蚤の市★]
- 「ワールドトリガー」原作1話から完全新作アニメ化、よりパワーアップした1stシーズンとして [爆笑ゴリラ★]
- 自ら「パンセクシュアル」だと明かし、東由貴・東京都議(立憲民主)が「パートナーシップ」施策の充実求める:東京新聞 [少考さん★]
- お昼のまったり🍵😶‍🌫🤏すこすこハウス🏡
- ネトウヨ「中国ロシアとの戦争?日本にはアメリカがついてるので100%勝ちますよ」 [165981677]
- 【悲報】高市政権、中国軍機のレーダー照射について国際社会に発信へ [115996789]
- 「ミニトマトがボウルに入ってるから使ったら残りはラップして輪ゴムしといてー」👉アスペ系旦那、とんでもない行動に出てしまう [242521385]
- 外人激怒「日本のアニメのヒロインは"白人"はいるのに黒人はいない」 [793833473]
- 【超絶悲報】玉川徹、反日売国奴。「レーダー照射問題は高市さんの台湾有事答弁から始まった。中国をいたずらに刺激しても何も得はない」 [519511584]
