関数とオブジェクトの書き方メモ

ひっそり更新します。

*関連メモ*
[python ジャンプスタート](https://qiita.com/0x20FE/items/6f8b6d893b9c5c197c5b)
*C,perl,PHP. JavaScript,Scilab,VHDL,pythonの比較*
 [配列と文字列処理の比較](https://qiita.com/0x20FE/items/ b6ea768692297b721951)
   [関数とオブジェクトの書き方メモ](https://qiita.com/0x20FE/items/02e2a6d8380851272a2c)
  [Scilab,NumPy,R行列処理の比較](https://qiita.com/0x20FE/items/75622186ba8a0c6086ce)

##関数

||関数定義|関数呼び出し|
|:--|:--|:--|
|C|型 関数名(引数型 引数名,...){<br>&nbsp;&nbsp;return 値;<br>}|関数名(引数,...)|
|perl|# 例 <br>sub 関数名{<br>&nbsp;&nbsp;my @args=@_;<br>&nbsp;&nbsp;return 戻り値;<br>}|#例<br>＄ret=関数名(引数,...);<br>(＄r1,＄r2)=関数名(引数,...);|
|PHP|function 関数名(＄引数）{<br>&nbsp;&nbsp;return 値;<br>}| ＄val=関数名(...);|
|JavaScript|function 関数名(引数）{<br>&nbsp;&nbsp;return 値;<br>}|＄val=関数名(...);|
|SciLab|function [r1,r2]=関数名(引数1,引数2)<br>&nbsp;&nbsp;r1=戻り値1;<br>&nbsp;&nbsp;r2=戻り値2;<br>endfucntion|[r1,r2]=関数名(引数1,引数2)|
|VHDL|function 関数名(引数1:in 型)<br>&nbsp;&nbsp;return 型 is<br>&nbsp;&nbsp;variable 変数:型;<br>begin<br>&nbsp;&nbsp;変数:=値;<br>&nbsp;&nbsp;return 変数;<br>end 関数名|変数<=関数名(引数1);|
|python|def 関数名(引数1,...):<br>&nbsp;&nbsp;...<br>&nbsp;&nbsp;return =a,b<br>|a,b=関数名(引数...)|
気をつけるところは、perlの引数の渡し方、VHDLの戻り値の型指定でしょうか。perlやC++の参照渡しもややこしいですが。

# オブジェクト
##コンストラクタ定義とインスタンス作成方法

||コンストラクタ定義|インスタンス作成|
|:--|:--|:--|
|C++|クラス名{<br>&nbsp;&nbsp;クラス名();<br>&nbsp;&nbsp;クラス名(const クラス名 &x);//コピーコンストラクタ<br>&nbsp;&nbsp;...<br>};<br>クラス名::クラス名(){...}<br>クラス名::クラス名(const クラス名 &x){...}|クラス名 obj;<br>クラス名 b=obj;|
|perl|package クラス名;<br>sub new{<br>&nbsp;&nbsp; my ＄self={};<br>&nbsp;&nbsp;＄self->{要素名}=...;<br>&nbsp;&nbsp;bless (＄self);<br>&nbsp;&nbsp;return ＄self;<br>}<br>1;|＄obj = クラス名->new();|
|PHP|class クラス名(){<br>&nbsp;&nbsp;function __construct(引数1,...){}<br>}|＄obj=new クラス名(...);|
|JavaScript|var コンストラクタ名=function(引数1,...){<br>&nbsp;&nbsp;this.メンバー名=...;<br>&nbsp;&nbsp;this.メソッド名=function(...){...}<br>}|var obj=new コンストラクタ名(引数1,...);
|python|class クラス名:<br>&nbsp;&nbsp;def \_\_init\_\_(self,引数1,...):<br>&nbsp;&nbsp;&nbsp;&nbsp;...<br>|obj = クラス名(引数...)|
|sciLab|obj=function クラス名(...)<br> &nbsp;obj=tlist(['クラス名';'メンバ名1';'メンバ名2'],[メンバ値1],[メンバ値2]);<br>&nbsp;obj.メンバ名1=[...];<br> endfunction|obj=クラス名(...);<br>obj.メンバ名2=[...];|

##メソッド

||メソッド定義|メソッド呼び出し|
|:--|:--|:--|
|Objective-C<br>クラスメソッド|+(型) メソッド名:(引数1型) 引数1名 ラベル2:(引数2型)引数2名 ... <br>{return 戻り値;}|[クラス名 メソッド名:引数1 ラベル2:引数2 ...];|
|Objective-C<br>インスタンスメソッド|-(型) メソッド名:(引数1型) 引数1名 ラベル2:(引数2型)引数2名 ... <br>{return 戻り値;}|[obj メソッド名:引数1 ラベル2:引数2 ...];|
|perl| sub メソッド名{ <br>&nbsp;&nbsp;my ＄self = shift;<br> &nbsp;&nbsp;＄self ->{メンバー名}...<br>}|＄obj->メソッド名(引数1,...);|
|PHP|クラス定義内で<br>function メソッド名(...){...}|＄obj->メソッド名(...);
|JavaScript|コンストラクタ内で<br>this.メソッド名(引数1,...)={...};|obj.メソッド名(...);|
|python|クラス定義内で<br>&nbsp;&nbsp;def メソッド名(self,引数1,...):<br>&nbsp;&nbsp;&nbsp;&nbsp;self.メンバー変数=...<br>|obj.メソッド名(引数...)|

##SciLab関連ドキュメントリンク
*install*
[macOSでSciLabを動かすまで](https://qiita.com/0x20FE/items/2ba5e60685816485ea4c)
[SciNoteのオートコンプリートをとめたい](https://qiita.com/0x20FE/items/cb17fda3f7456a807d41)

*実践*
[SciLabでCSV読み込み](https://qiita.com/0x20FE/items/dd6cbf94be0f2c20d002)
[SciLabでGUIを使ってみる](https://qiita.com/0x20FE/items/cf9cdad0e4be88714118)
[Mac/Windows共用scilabスクリプト]()未公開
[SciLabでフィルタを適用する]()未公開
[プロットメモ]()未公開
[プロットあれこれ]()未公開

*他の言語と比較・書き換え*
[Scilab (NumPy) - plotの書き方](https://qiita.com/0x20FE/items/311ac0e61a129e6a01fa)
 [配列と文字列処理の比較](https://qiita.com/0x20FE/items/ b6ea768692297b721951)
   [関数とオブジェクトの書き方メモ](https://qiita.com/0x20FE/items/02e2a6d8380851272a2c)
  [Scilab,NumPy,R行列処理の比較](https://qiita.com/0x20FE/items/75622186ba8a0c6086ce)