Edited at

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

ひっそり更新します。

関連メモ

python ジャンプスタート

C,perl,PHP. JavaScript,Scilab,VHDL,pythonの比較

配列と文字列処理の比較

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

Scilab,NumPy,R行列処理の比較


関数

関数定義
関数呼び出し

C
型 関数名(引数型 引数名,...){
  return 値;
}
関数名(引数,...)

perl
# 例
sub 関数名{
  my @args=@_;
  return 戻り値;
}
#例
$ret=関数名(引数,...);
($r1,$r2)=関数名(引数,...);

PHP
function 関数名($引数){
  return 値;
}
$val=関数名(...);

JavaScript
function 関数名(引数){
  return 値;
}
$val=関数名(...);

SciLab
function [r1,r2]=関数名(引数1,引数2)
  r1=戻り値1;
  r2=戻り値2;
endfucntion
[r1,r2]=関数名(引数1,引数2)

VHDL
function 関数名(引数1:in 型)
  return 型 is
  variable 変数:型;
begin
  変数:=値;
  return 変数;
end 関数名
変数<=関数名(引数1);

python
def 関数名(引数1,...):
  ...
  return =a,b

a,b=関数名(引数...)

気をつけるところは、perlの引数の渡し方、VHDLの戻り値の型指定でしょうか。perlやC++の参照渡しもややこしいですが。


オブジェクト


コンストラクタ定義とインスタンス作成方法

コンストラクタ定義
インスタンス作成

C++
クラス名{
  クラス名();
  クラス名(const クラス名 &x);//コピーコンストラクタ
  ...
};
クラス名::クラス名(){...}
クラス名::クラス名(const クラス名 &x){...}
クラス名 obj;
クラス名 b=obj;

perl
package クラス名;
sub new{
   my $self={};
  $self->{要素名}=...;
  bless ($self);
  return $self;
}
1;
$obj = クラス名->new();

PHP
class クラス名(){
  function __construct(引数1,...){}
}
$obj=new クラス名(...);

JavaScript
var コンストラクタ名=function(引数1,...){
  this.メンバー名=...;
  this.メソッド名=function(...){...}
}
var obj=new コンストラクタ名(引数1,...);

python
class クラス名:
  def __init__(self,引数1,...):
    ...

obj = クラス名(引数...)


メソッド

メソッド定義
メソッド呼び出し

Objective-C
クラスメソッド
+(型) メソッド名:(引数1型) 引数1名 ラベル2:(引数2型)引数2名 ...
{return 戻り値;}
[クラス名 メソッド名:引数1 ラベル2:引数2 ...];

Objective-C
インスタンスメソッド
-(型) メソッド名:(引数1型) 引数1名 ラベル2:(引数2型)引数2名 ...
{return 戻り値;}
[obj メソッド名:引数1 ラベル2:引数2 ...];

perl
sub メソッド名{
  my $self = shift;
  $self ->{メンバー名}...
}
$obj->メソッド名(引数1,...);

PHP
クラス定義内で
function メソッド名(...){...}
$obj->メソッド名(...);

JavaScript
コンストラクタ内で
this.メソッド名(引数1,...)={...};
obj.メソッド名(...);

python
クラス定義内で
  def メソッド名(self,引数1,...):
    self.メンバー変数=...

obj.メソッド名(引数...)