2017-07-30 8 views

答えて

7

ジュリアでは、append ! to names of functions that modify their argumentsの規則です。その理由は、Julia関数の引数がpassed-by-sharingであるため、この規則がないと、関数が入力引数の内容を変更するかどうかを知ることは容易ではありません。

+0

私はこのコードを読んでいますが、なぜプログラマは関数の定義の後に '!'を付けずに関数の別のコピーを追加したのでしょうか? @演算子(V :: Matrix;ポリシー= false)= 演算子!(V、類似(V);ポリシー=ポリシー) ' – ReD

+1

@ReD'演算子はどのように実装されていますか? – Gnimuc

+2

>なぜプログラマが関数の別のコピーを追加したのですか?関数の定義の後に? !変更可能ではありません。つまり、入力を変更しません。それはoperator(!)で変更された別の行列を(同様の(V)を介して)作成しますが、それを返さないことに注意してください。 operator()を呼び出すと、入力は変更されません。演算子!()を呼び出すと、少なくとも1つの入力(つまり、2番目の入力)が変更されます。 – sbromberger

関連する問題