アカウント名:
パスワード:
type TProc = procedure(hoge: integer); //integerを受け取る手続き TFunc = function: Integer //integerを返す関数
type TMyFunc = function: Integer; function f1: Integer; begin result := 1; end; function f2: TMyFunc; begin Result := f1; end;procedure test;var I: Integer; F: TMyFunc;begin I := f1; // 1 F := f1; // TMyfunc F; //1end;
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
最初のバージョンは常に打ち捨てられる。
Pascalで関数ポインタはたしか… (スコア:0)
http://jp.rubyist.net/magazine/?0021-Hotlinks#fm06 [rubyist.net]
関数のあとの引数括弧を略するルールについての話あたりで、
Pascalについて
「関数なんて型は無さそうだよね。」
とのことですが、
記憶に間違いがなければ
(すみません手元に処理系がないもんで)
関数ポインタみたいなものは有ったと記憶しています。
記憶してるのはBorland拡張かも知れませんが、少なくとも「Pascalらしさ」を崩してるようには見えませんでした。
以下、処理系も仕様書も参照してなくて個人的憶測でしかなく恐縮なのですが、想像を書いてみます。
識者さん突っ込んでください。
Pascalは、(Cや)Rubyと違う点とし
Re:Pascalで関数ポインタはたしか… (スコア:1)
Delphiでは手続き型があってこれが関数ポインタになります。 代入の左辺が手続き型の場合は代入です。それ以外の場合は呼び出しになります。 なんてのはコンパイルできます。
この辺はBorland拡張というか、原始Pascalにはポインタも無いんで扱えはしませんね。 少なくともポインタの概念を導入しないと使えないので、Pascal上では矛盾持ちだと思えます。
> コンパイラはソース「全部」を一発で見渡せたはずです。
一応Delphi上でもコンパイラは1パスになるのでソースはすべて見えています。