[技術講座]
Pnutsの最大の利点は、スクリプトからJavaのオブジェクトに自由にアクセスして操作することができる点である。JavaAPIで提供されているものや、その他さまざまなクラスライブラリをスクリプトから利用することができる。
このセクションの例ではオブジェクトを操作する感覚を伝えるために、対話型のシェル上で作業を行っている。
Pntusでは、Javaオブジェクトの作成時にnew演算子を「使わない」ことに注意する。オブジェクトの生成は、class <パッケージ名を含めたクラス名()>のように記述する。
またPnutsでは、ある変数がクラスをあらわしているのかオブジェクトなのかはっきりインタプリンタに伝えるためにclassキーワードを使う。コンパイルという作業がないPnutsでは、スクリプトに出てきた変数がオブジェクトへの参照を表すかクラスを表すかどうかを決定できないためである。
C:\home\kanno\oed\pnuts_1>pnuts Copyright (c) 1997-2000 Sun Microsystems, Inc. All rights reserved. Pnuts version 1.0rc1, 1.3.0_02 (Sun Microsystems Inc.) > aFrame= class java.awt.Frame() java.awt.Frame[frame2,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=] > >//もしくはこのように書いてもよい //Classオブジェクトを取得して変数Frameに代入してから、それを関数のように呼び出している > > Frame = class java.awt.Frame java.awt.Frame class > aFrame = Frame() java.awt.Frame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=] >
オブジェクトを生成するたびに、パッケージ名を含めたクラス名を記述するのは面倒である。Pnutsでは、Javaのようにクラスやパッケージをimportする機能がある。この機能を使う方がJavaの流儀に近い。
>import("java.awt.*") null > aFrame=Frame() java.awt.Frame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=] >
インスタンスメソッドの呼び出しはJavaとほとんど一緒である
>import("java.awt.*") null > aFrame=Frame() java.awt.Frame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,resizable,title=] > aFrame.show() //Windowが表示される null > aFrame.setSize(300,200) //Windowのサイズが変更される null > aFrame.dispose() //Windowが消去される null >
staticメソッドの呼び出しは レシーバ :: メソッド と記述する
>Math::sqrt(3) 1.7320508075688772 > Math::random() 0.5332636966391512 >
基本的にはメソッドの時と要領は一緒である。インスタンス変数へのアクセスには、.をつかいクラス変数へのアクセスには:: を使う。
>Point = class java.awt.Point java.awt.Point class > pt = Point(10, 20) java.awt.Point[x=10,y=20] > pt.x //参照 10 > pt.x=5 //代入 5 >//staicなフィールドの場合 > blue = class java.awt.Color::blue java.awt.Color[r=0,g=0,b=255] >
© 2001 OGIS-RI Co., Ltd. |
|