Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Functions > overloading

overloading

表示,関数および演算子オーバーロード機能

説明

Scilabにおいては, 変数表示, 関数および演算子は 関数(Scilabコードまたはプリミティブ)により新規オブジェクト用に 定義することができます.

表示

tlistにより定義される 新規オブジェクトの表示は, オーバーロードすることができます (デフォルトの表示はlistの出力に似ています). オーバーロード関数は入力引数を1つとし,出力引数を持たない必要があります. その関数の名前は,%<tlist_type>_pのように 作成します. ただし, %<tlist_type> は, tlist型の要素の最初のエントリを 最初の9文字に丸めたものを意味します.

演算子

指定したオペランド型について定義されていない各演算子を 定義することができます. オーバーロード関数は入力引数を1つ,オペランドの数に基づき 1個または2個の入力を有する必要があります. 関数名は以下のように作成されます:

2項演算子の場合: %<first_operand_type>_<op_code>_<second_operand_type>

単項演算子の場合: %<operand_type>_<op_code>

n項演算子の展開および挿入は以下のように記述されます.

typename関数に登録された型のみが オーバーロードマクロの中で使用できることに注意してください.

<operand_type>, <first_operand_type>, <second_operand_type> は, 以下のテーブルに記述された各データ型に関連する 文字の並びです:

データ型 文字コード typeof コメント
double行列 s 定数
多項式行列 p 多項式
論理値行列 b 論理値
疎行列 sp 疎行列
論理値疎行列 spb 論理値疎行列
Matlab 疎行列 msp Matlab疎行列
整数行列 i int8, int16,int32, uint8, uint16, uint32
文字列行列 c 文字列
ハンドル h ハンドル
コンパイルされた関数 fptr fptr
スクリプト関数 mc 関数
ライブラリ l ライブラリ
リスト l リスト
tlist tlist型 tlist型 最初のtlistエントリの最初の文字列
mlist mlist型 mlist型 最初のmlistエントリの最初の文字列
ハイパー行列 hm hypermat
ポインタ ptr ポインタ
セル ce ce
structure st st
有理数 r 有理数
線形状態空間 lss 状態空間
暗黙の多項式 ip size implicit 1:1:$

<op_code> は, 以下のテーブルに記述された 各演算子に関連する文字です:

op char code
' t
+ a
- s
* m
/ r
\ l
^ p
.* x
./ d
.\ q
.*. k
./. y
.\. z
: b
*. u
/. v
\. w
[a,b] c
[a;b] f
() extraction e
() insertion i
== o
<> n
| g
& h
.^ j
.' 0
< 1
> 2
<= 3
>= 4
~ 5
iext 6

展開構文b=a(i1,...,in)の オーバーロード関数は, 以下のような呼び出し手順となります: b=%<type_of_a>_e_(i1,...,in,a)

そして,構文 [x1,..,xm]=a(i1,...,in) は 以下のような呼び出し手順となります: [x1,..,xm]=%<type_of_a>_e_(i1,...,in,a)

挿入構文に関するオーバーロード関数 a(i1,...,in)=b は以下のような呼び出し手順となります: a=%<type_of_b>_i_<type_of_a>(i1,...,in,b,a).

文字コード6x.b(2)=33のような複雑な挿入アルゴリズム で使用することができます. ただし,bフィールドは構造体xで 定義されません. 挿入は自動的にtemp=x.b; temp(2)=33; x.b=tempに分解されます. 文字コード6 がこのアルゴリズムの最初の手順で 使用されます.オーバーロード関数6 は, eのものに非常によく似ています.

関数 :

いくつかの基本プリミティブ関数

新規データ型に関してオーバーロードができます. 特定のデータ型に関してこのような関数が未定義の場合, 関数%<type_of_an_argument>_<function_name> がコールされます. ユーザはこのコールされた関数に入力データ型に関する 定義を追加することができます.

//表示
            function []=%tab_p(l)
            disp([[' '; l(3)] [l(2); string(l(4))]])
            endfunction
            
            tlist('tab', ['a', 'b'], ['x'; 'y'], rand(2, 2))
//演算子
            function x=%c_a_s(a, b)
            x = a + string(b);
            endfunction
            
            's' + 1
//関数
            function x=%c_sin(a)
            x = 'sin(' + a + ')'
            endfunction
            
            sin('2 * x')

参照

  • tlist — Scilab オブジェクトおよび型付のリスト定義.
  • disp — 変数を表示
  • symbols — scilab 演算子の名前
  • typeof — オブジェクトの型
  • type — 変数の型を返す
  • type — 変数の型に名前を付ける
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:40:38 CEST 2012