https://mstdn.nere9.help/@orange_in_space/101266366644177728
これ、
impl Hoge {
fn hoge1(self) -> Self;
fn hoge2(&self) -> &Self;
fn hoge3(&mut self) -> &mut Self;
fn hoge4(&mut self) -> Self;
// などなど
}
のどれのつもりで言ってるのかわからないんですが (これらが区別できない言語はまず弱い)
うん><; オレンジもAda大好き(ほとんど使った事無いけど)ってくらいだしそう考えるし、その前の話的にはboolならって書いたじゃん?><;( https://mstdn.nere9.help/@orange_in_space/101266265618556686 )
その上で、金具さんの案はどうなのって・・・><
https://mstdn.nere9.help/@orange_in_space/101266292721323876
これは型で表明されれば何の混乱も起きない話で、たとえば
fn TryIncrement(&mut self) -> Result<&mut Self, IncrementError>
なのか
fn TryIncrement(&self) -> Result<Self, IncrementError>
なのか、型を見れば mutability なんて自明なので
で、intにint int.TryIncrement()みたいなのがあったらとんでもなく混乱するかも><
int x=3;
int y=x.TryIncrement();
ってしたあとにxはどうなってるのかわけわからんってなるかも><(xが文字通りインクリメントされて破壊されて4になった?>< それともyに4が入るだけでxは3?>< ていうかそもそもTryIncrement()が返すのは結果なのか、それとも何らかの勝手な定義による成否の表現?><(例えば0なら成功とか))