轻松创建Jython全局函数
创始人
2024-04-16 06:10:53
0

即使 Java 语言不支持全局函数,您也可以轻松创建Jython全局函数。您还可以定义Jython全局变量(通常要设置常量,而不必为它们创建类包装器)。例如,看一下下面的清单:

清单 10. Jython全局函数以字符串形式返回一系列数字(保存在名为 listing10.py 的文件中)

  1. START = 1 
  2. SPACER = " " 
  3. def CounterString(length):  
  4.     buffer = ""  
  5.     for i in range(START, length):  
  6.         buffer = buffer + str(i) + SPACER  
  7.     return buffer  
  8. print CounterString(10)  

首先我们定义了两个Jython全局变量 START 和 SPACER ,它们用作该程序的常量,其中一个是整数,而另一个是字符串。

接着我们使用 def 关键字定义了函数 CounterString 。该函数有一个称为 length 的整数参数。Jython 未显式检查该参数是否是整数,这一事实是 Jython 的动态特性的一个优点;但它同时也可能是一个缺点,因为某些类型错误只有在后面的 Java 编程中才能被捕获。

请注意函数特征符行以冒号结尾,从而引入了一个新块,它是通过使后续行缩进来标记的。这一新块的第一行将字符串 buffer 初始化为空字符串。对这个 buffer 进行操作以产生所期望的函数结果。

下一行创建了一个循环。Jython 的 for 语句与 Java 语言语句完全不同。在 Java 编程中,您可以设置初始和终止条件,以及每个循环步骤。Jython 的循环自始至终总使用一个特殊序列。该序列一般是一个列表,它是 Jython 的一种非常重要的数据类型。

由三个字符串组成的列表如下所示:

["a", b", "c"]

如果您想对从 1到 N 的数字作循环(如同我们这里所做的),那么可以使用函数 range() ,它返回给定范围内的数字列表。在交互式 Jython 提示符下做些实验应该会帮助您熟悉这个工具:

清单 11. range() 函数示例

  1. >>> range(5)  
  2. [0, 1, 2, 3, 4]  
  3. >>> range(1, 5)  
  4. [1, 2, 3, 4]  
  5. >>> range(1, 10, 2)  
  6. [1, 3, 5, 7, 9]  
  7. >>> range(10, 1, -3)  
  8. [10, 7, 4] 

回过头看一下 清单 10, for 循环的每个迭代都作为一个代码块运行,该代码块从该函数体其余部分缩进一层。该块是将当前 buffer 并置到新数字的一行代码,首先使用 str() 函数(而不是 Java 编程中的 cast )将新数字强制转换成字符串,随后追加一个分隔符。该循环终止后,返回最终的 buffer。该函数体之后的一行代码对它进行测试。Jython 同样允许您不使用任何特殊工具(如应用程序类上的 main 方法)就可以完成这个任务。清单 10 的输出显示如下:

清单 12. 清单 10 的输出

  1. $ jython listing10.py  
  2. 1 2 3 4 5 6 7 8 9   

以上便是Jython全局函数的介绍。

【编辑推荐】

  1. 直接在源文件中编写Jython代码
  2. Jython入门指导:语言特性简介
  3. Jython的字符串操作和函数
  4. 更多的处理:在Jython中解析命令行
  5. 如何将Jython类型转换为Java类型

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...