Pure関数とNonPure関数について | UE4&5 Forum | Tech Stadium Forum

Pure関数とNonPure関数につい...
 
通知
すべてクリア

Pure関数とNonPure関数について  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
01/09/2020 2:17 pm  
Pure関数とNonPure関数について、
First Person Shooter④の講義内で、関数<Get Inventory Image>と関数<Inventory Check>をそれぞれPure関数に設定しておりますが、この場合の使用意図としては「ステートやクラスのメンバーを一切変更させないようにする。」で正しいのでしょうか。
 
以下のリンク記事では意味内容が矛盾していることもあり困惑しております。
講義内で使用した理由やPure関数を知るうえで最低限知るべき情報の説明をお願いできますでしょうか。
公式ドキュメントでは、

関数は 純粋関数 または 非純粋関数 のどちらかになります。両者の大きな違いは、純粋関数がステートやクラスのメンバーを一切変更しないのに対し、 非純粋関数はステートを自由に変更します。純粋関数は通常、データ値を出力するだけの getter 関数や演算子に使用されます。

 
以下のサイトでは、

pureは公式ドキュメントとは異なりクラスのメンバーを変更可能

また以下のサイトでは、
Pure関数とNonPure関数では呼び出されるタイミングが違うことについて言及されています。
https://historia.co.jp/archives/3929/  
 

引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
01/09/2020 2:20 pm  

First Person Shooter④で関数<Get Inventory Image>と関数<Inventory Check>をPureに変更した理由は、関数の中でデータの修正や処理がなく、ただデータを出力するだけの関数なのでPureに変更したわけです。

公式ドキュメントにも書かれています。
「データ値を出力するだけの getter 関数や演算子に使用されます。 関数または演算子は、データ値を単に出力します。」

正直言うとPure関数にしなくても使うことには問題ありません。
ですが、Pure関数にチェックした理由は「この関数は出力するだけで変数とか他のデータをいじることではないですよ」と明示的に見せて分かりやすくして他の人が見てもすぐ分かるようにするためです。

因みに2番目の
https://qiita.com/ConquestArrow/items/de893fb706f334a12ea9
このページは間違ってる部分があるので参考しない方がいいと思います。

 


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
01/09/2020 2:21 pm  

公式ドキュメントどおりの解釈でよいのですね。安心いたしました。

ありがとうございます。


返信引用
共有:
タイトルとURLをコピーしました