ObjectScript 中文入门教程

面向初学者,带你快速上手 InterSystems IRIS 的编程语言


一、什么是 ObjectScript?

ObjectScript 是 InterSystems 公司为其数据库产品(如 Caché 和 IRIS)设计的一种类 SQL 的面向对象语言。它融合了过程式、面向对象编程和 SQL 查询的能力,广泛用于医疗、金融等行业构建高性能系统。

它不仅是一门语言,更是一套数据访问、类定义、服务构建的开发范式


二、入门准备

1. 安装开发环境(推荐使用 VS Code)

  • 安装 VS Code

  • 安装插件:InterSystems ObjectScript

    插件地址:marketplace.visualstudio.com/items?itemN...

  • 安装并运行 IRIS(可使用 Docker 版):

    css 复制代码
    bash
    复制编辑
    docker run -d --name iris -p 52773:52773 -p 1972:1972 \
      intersystemsdc/iris-community:latest

2. 登录管理界面

打开浏览器访问:
http://localhost:52773/csp/sys/UtilHome.csp

默认用户名密码:_SYSTEM / SYS


三、ObjectScript 的基本语法

1. Hello World 示例

csharp 复制代码
objectscript
复制编辑
Class Demo.Hello Extends %Persistent
{
    Method SayHello()
    {
        WRITE "你好,ObjectScript!", !
    }
}
  • Class:定义类,类似 Java、C#。
  • Extends %Persistent:表示这个类可以被持久化(即存储到数据库)。
  • Method:定义方法。
  • WRITE:输出内容到终端,! 表示换行。

调用方法(在终端或代码中):

scss 复制代码
objectscript
复制编辑
DO ##class(Demo.Hello).SayHello()

2. 变量与类型

ObjectScript 是动态类型语言,也可以声明类型:

ini 复制代码
objectscript
复制编辑
SET name = "小明"
SET age = 18
WRITE name, " 的年龄是 ", age, !

3. 条件与循环

sql 复制代码
objectscript
复制编辑
IF age > 18 {
    WRITE "成年人"
} ELSE {
    WRITE "未成年人"
}

FOR i=1:1:5 {
    WRITE "当前是第 ", i, " 次", !
}

4. 类属性与持久化

vbnet 复制代码
objectscript
Class Demo.Person Extends %Persistent
{
    Property Name As %String;
    Property Age As %Integer;
}

创建并保存数据:

vbnet 复制代码
objectscript
SET person = ##class(Demo.Person).%New()
SET person.Name = "小红"
SET person.Age = 22
DO person.%Save()

从数据库中读取:

ini 复制代码
objectscript
SET id = 1
SET p = ##class(Demo.Person).%OpenId(id)
WRITE p.Name

四、操作数据库(SQL + 对象)

1. 使用对象操作数据

vbnet 复制代码
objectscript
SET student = ##class(Demo.Person).%New()
SET student.Name = "张三"
SET student.Age = 30
DO student.%Save()

2. 使用 SQL 执行查询

vbscript 复制代码
objectscript
SET sql = "SELECT Name, Age FROM Demo.Person WHERE Age > 20"
SET stmt = ##class(%SQL.Statement).%New()
DO stmt.%Prepare(sql)
SET rset = stmt.%Execute()

WHILE rset.%Next() {
    WRITE rset.Name, " - ", rset.Age, !
}

五、构建 REST API(简版示例)

vbscript 复制代码
objectscript
Class Demo.API.Person Extends %CSP.REST
{

    XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
    {
        <Routes>
            <Route Url="/person" Method="GET" Call="GetAll"/>
        </Routes>
    }

    ClassMethod GetAll() As %Status
    {
        SET tRS = ##class(%ResultSet).%New("Demo.Person:ListAll")
        DO tRS.Execute()
        DO %response.SetContentType("application/json")
        DO %response.Write(tRS.%ToJSON())
        QUIT $$$OK
    }
}

配置完这个类之后,你就可以通过 http://localhost:52773/csp/yournamespace/demo/api/person 获取 JSON 格式的数据。


六、调试与工具使用

  • %Studio / VS Code 可用于编辑类
  • %SYS 命名空间中包含系统函数
  • WRITEZWRITE 可用于查看变量
  • DO ##class(ClassName).Method() 是类方法调用格式

七、推荐练习项目

  • 📌 学会创建 PersonBook 等类并进行增删改查
  • 📌 学会用 SQL + Object 混合方式查询数据
  • 📌 学会构建一个 REST API 暴露数据(GET/POST)
  • 📌 尝试使用"全局变量"(Globals)存储结构化数据

八、资料推荐(附中文学习建议)

类型 链接
官方入门教程 learning.intersystems.com/
ObjectScript 文档 docs.intersystems.com/irislatest/...
中文交流社区 community.intersystems.com(中英混合)
VSCode 插件 ObjectScript Extension

九、学习建议

  • ✅ 刚开始时多练 Class + SQL + 方法调用 的基础套路
  • ✅ 通过 REST 项目实战来理解语言+框架能力
  • ✅ 不要被奇怪的语法吓到(如 ..$%),每个符号有其意义
  • ✅ 官方社区是最佳求助平台

我是桃夭,期待你的关注。

相关推荐
调试人生的显微镜13 分钟前
iOS App性能测试工具全解析:开发者必备的实战工具指南
后端
安思派Anspire14 分钟前
LangGraph + MCP + Ollama:构建强大代理 AI 的关键(二)
人工智能·后端·python
天天摸鱼的java工程师25 分钟前
2025已过半,Java就业大环境究竟咋样了?
java·后端
货拉拉技术30 分钟前
OceanBase向量检索在货拉拉的探索和实践
后端
转转技术团队1 小时前
多代理混战?用 PAC(Proxy Auto-Config) 优雅切换代理场景
前端·后端·面试
南囝coding1 小时前
这几个 Vibe Coding 经验,真的建议学!
前端·后端
阿杆1 小时前
服务一挂就手忙脚乱?教你用 Amazon Lambda 打造 0 成本服务监控!
后端·自动化运维
德育处主任1 小时前
在亚马逊云上,如何基于 VPC IPAM 的 ALB 公网 IP 预测分配?
后端
不吃肉的羊1 小时前
PHP设置文件上传最大值
后端·php
专注物联网全栈开发2 小时前
ESP32的IRAM用完了怎么优化
后端