等效脚本API

Squish 为其支持的所有脚本语言提供了相同的根本性 API,并在需要时添加了一些特定语言的额外功能,例如在 JavaScript 中处理文件,因为标准语言没有提供。在本节中,我们将讨论如何使用 API,注意因脚本语言本身的差异而导致的用法差异。

差异在特定语言的注释中描述。例如,Python 注释展示了如何访问 Python 内置的 type 函数而不是 Squish 的 type(objectOrName, text) 函数;JavaScript 注释和扩展 API描述了 Squish 为文件处理、操作系统交互、使用 XML 和 SQL 等提供的新增 API。

示例类

在审查差异之前,我们先看看在下表中使用的示例类。

对于非 macOS 平台,下表使用以下示例 C++ 类

class C
{
public:
    C();
    C(const char *s);

    void doA(bool b);
    static void doB();

    int p;
    ...
};

对于 macOS,下表使用以下 Objective-C 类

@interface C : NSObject
{
    ...
}

- (void)doA;
- (void)doB:(BOOL)b;
+ (void)doC;
+ (void)doD:(BOOL)b;

- (int)p;
- (void)setP:(int)newP;

...

@end

此外,假设存在一个名为 c 的类型为 C 的对象。

表中某些调用中的下划线与 Objective-C 相关。有关详细信息,请参阅函数和属性(macOS)

等效脚本函数

下表提供了对创建对象、获取和设置属性、执行比较等最基本任务对应的等效脚本函数的简要概述。尽管执行的操作相同且使用相同的 API,但由于 Squish 支持的脚本语言的语法和结构差异,实际示例代码会有所不同。

Squish API 文档包含示例(几乎总是所有支持的脚本语言)以及到手册中其他示例的链接。如果您的脚本语言中没有示例,请使用下表将其中一种语言的示例转换为所需的语言。

Python

功能Python
创建默认对象c = C()
使用参数创建对象c = C("apple")
获取属性 p 的值x = c.p
设置属性 p 的值c.p = 10
调用成员函数c.doA(True)
验证相等性test.compare(c.p, 2)
将类似字符串的对象与原生字符串进行比较s == "Orange"
转换为原生字符串
s = str(val) # or
s = unicode(val)
发送按键type(":lineEdit_Widget", "Orange")
原生布尔值True, False

JavaScript

功能JavaScript
创建默认对象var c = new C();
使用参数创建对象var c = new C("apple");
获取属性 p 的值var x = c.p;
设置属性 p 的值c.p = 10;
调用成员函数c.doA(true);
验证相等性test.compare(c.p, 2);
将类似字符串的对象与原生字符串进行比较s == "Orange"
转换为原生字符串var s = String(val);
发送按键type(":lineEdit_Widget", "Orange");
原生布尔值true, false

Perl

功能Perl
创建默认对象
my $c = new C();  # new-style
my $c = C->new(); # old-style
使用参数创建对象
my $c = new C("apple");  # new-style
my $c = C->new("apple"); # old-style
获取属性 p 的值my $x = $c->p;
设置属性 p 的值$c->p(10);
调用成员函数$c->doA(1);
验证相等性test::compare($c->p, 2);
将类似字符串的对象与原生字符串进行比较$s eq "Orange"
转换为原生字符串my $s = "" . $val;
发送按键type(":lineEdit_Widget", "Orange");
原生布尔值1, 0

Ruby

功能Ruby
创建默认对象c = C.new
使用参数创建对象c = C.new("apple")
获取属性 p 的值x = c.p
设置属性 p 的值c.p = 10
调用成员函数c.doA(true)
验证相等性Test.compare(c.p, 2)
将类似字符串的对象与原生字符串进行比较s == "Orange"
转换为原生字符串s = String(val)
发送按键type(":lineEdit_Widget", "Orange")
原生布尔值true, false

Tcl

功能Tcl
创建默认对象set c [construct C]
使用参数创建对象set c [construct C "apple"]
获取属性 p 的值设置 x [属性获取 $c p]
设置属性 p 的值属性设置 $c p 10
调用成员函数调用 $c doA true
验证相等性测试比较 [属性获取 $c p] 2
将类似字符串的对象与原生字符串进行比较比较 $s "Orange"
转换为原生字符串将 s 设置为 [转换为字符串 $val]
发送按键调用类型 ":lineEdit_Widget" "Orange"
原生布尔值true, false

macOS 绑定

对于 macOS,以下是与 Objective-C 对象相关的特定绑定

功能PythonJavaScriptPerlRubyTcl
调用成员函数(无参数)c.doA()c.doA();$c->doA();c.doA()调用 $c doA
调用成员函数(带参数)c.doB_(True)c.doB_(true);$c->doB_(1);c.doB_(true)调用 $c doB_ true
调用类(静态)函数(无参数)C.doC()C.doC();C::doC();C.doC()调用 C doC
调用类(静态)函数(带参数)C.doD_(True)C.doD_(true);C::doD_(1);C.doD_(true)调用 C doD_ true

©2024 Qt 公司有限公司。本文档的贡献包含各自所有者的版权。
本文档受免费软件基金会发布的GNU自由文档许可协议版本1.3的许可。
Qt 及其标志是芬兰及其它国家/地区的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。