开发环境用户数据不会保留;如欲参与内测请联系站务
居正Lv.10
天角兽

FIM++:像写信一样编程

文
著
中
E

发表于:

5,936
21
37,073
40
0
5
72
386
20

FIM++ 使用Java类库

第 19 章
8 年前
1451

下面所有的例子里, 位于{...} 里面的部分是可选的,而位于 (...|...) 里面的部分是可以相互代替的。

加载类库

I enchanted <标识符: 变量名> with <一列单词> .

一列单词将会被编译器转换为标准的Java类名。这里加载的类库将会被保存到变量里以便于以后使用。

写法举例:

javax swing j frame => javax.swing.JFrame
java lang math => java.lang.Math
java util hash map => java.util.HashMap 
org xml sax helpers xml filter impl => org.xml.sax.helpers.XMLFilterImpl
javax swing graphics two => javax.swing.Graphics2

创建对象

I woke up <标识符: 变量名> with <标识符: 类> {and <一列自变量>}.

读取字段

I (took|got|stole) <字段名> of <标识符: 类或对象> and {I} gave (it|them|her|him) to <标识符: 保存结果的目标变量> .

字段名可以是字符串或标识符。未来的版本将会支持数字,所以你可以直接使用原生的Java array。

写入字段

I gave <表达式> to <字段名> of <标识符: 类或对象> .

字段名可以是字符串或标识符。

注意:这个操作我没经过测试,可能用不了。

调用方法

{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} about <argument list> (so|if|what|when) {(it|she|he|they)} <标识符: 方法名>.

相当于下面的Java代码:

result = class.method(arguments); 
result = ((class)(arguments.head)).method(arguments.tail);

{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} about <argument> made <标识符: 属性名>.

相当于下面的Java代码:

result = class.setproperty(argument, true); 
result = ((class)argument)).setproperty(true);

{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} about <argument> with <arguments> of <属性名>.

相当于下面的Java代码:

result = class.setproperty(argument, arguments); 
result = ((class)argument)).setproperty(arguments);

{I told <标识符: 保存结果的变量>} I asked {<标识符: 类>} (what|if|when) <argument> {with <arguments>} (is|are|was|were|has|have|had) property .

相当于下面的Java代码:

result = class.getproperty(argument, arguments); 
result = ((class)argument)).getproperty(arguments);
result = class.isproperty(argument, arguments); 
result = ((class)argument)).isproperty(arguments);

译者注

经过实际测试,上面的语法似乎有问题,我举两个例子,这两个例子都是编译通过的:

1.无参数调用方法
Dear Princess Celestia: Random Ponies.
Today I learned:
    I enchanted Rainbow Dash with java util random.
    I woke up Rainbow Dash with Rainbow Dash.
    I told Pinkie Pie I asked about Rainbow Dash when she next int.
    I said Pinkie Pie.
Your faithful student, Rarity.

这里用java.util.Random来举例,其中第五行的语法为:

{I told <标识符: 保存结果的变量>} I asked about <标识符: 类> (so|if|what|when) {(it|she|he|they)} <标识符: 方法名>.
2.有参数调用方法
Dear Princess Celestia: Random Ponies.
Today I learned:
    I enchanted Rainbow Dash with java util random.
    I woke up Rainbow Dash with Rainbow Dash.
    I told Pinkie Pie I asked about Rainbow Dash and 11 when she next int.
    I said Pinkie Pie.
Your faithful student, Rarity.

其中第五行的语法为:

{I told <标识符: 保存结果的变量>} I asked about <标识符: 类> and <标识符: 传入参数> (so|if|what|when) {(it|she|he|they)} <标识符: 方法名>.

能够通过编译的语法与作者展示的语法并不一致,我不知道为什么。可能是作者写错了,或者上面的写法是老版本的可是作者却没有更新文档。特此注明,仅供参考。

从方法到javax.swing.ActionListener的自动转化

你可以把FIM++方法作为事件监听器添加到Swing部件上。

这个方法将在事件发生时被调用,不需要传入参数。返回的结果将被丢弃。