"Ruby" (外部计算系统)

更多信息

ExternalEvaluate 用法

  • ExternalEvaluate["Ruby",code] 在 Ruby REPL 中执行代码字符串并以 Wolfram 语言表达式的形式返回结果.
  • ExternalEvaluate["Ruby""String",code] 在 Ruby REPL 中执行代码字符串并以 Wolfram 语言字符串的形式返回输出.
  • ExternalEvaluate["Ruby""type",code]"type" 可取的设置包括:
  • "Expression"尝试转换为 Wolfram 语言表达式
    "String"给出外部运算器输出的原始字符串
    "ExternalObject"ExternalObject 的形式返回结果

数据类型

使用说明

  • 字符串模板 (<**>) 可用于计算并将 Wolfram 语言表达式插入 Ruby 代码字符串.

支持的外部运算

范例

打开所有单元关闭所有单元

基本范例  (3)

在 Ruby 中计算 2+2 并返回结果:

数组以列表形式返回:

类型 > 并从下拉菜单中选择 Ruby 可获取一个使用 ExternalEvaluate 进行计算的代码单元格:

[1,2,3,4].map { |n| n * 2 }

范围  (28)

启动 Ruby 会话:

将 Ruby 中的字符串拼接并返回结果:

Ruby 中的哈希散列以关联形式返回:

关闭会话:

会话的选项  (9)

"ReturnType"  (3)

对于 Ruby 运算系统,默认返回的类型是 "Expression"

对于 "Expression" 返回类型,会自动导入数字、字符串、列表和关联:

"String" 返回类型通过调用 Ruby 方法 to_s 返回结果字符串:

"Version"  (1)

可用 "Version" 来确保仅使用特定的 Ruby 版本:

可以指定次要版本或补丁版本:

"Evaluator"  (1)

用指定的 "Evaluator" 计算 Ruby 代码:

"SessionProlog"  (1)

"SessionProlog" 在会话开始时执行一些小指令:

"SessionEpilog"  (1)

"SessionEpilog" 在会话结束时执行一些小指令:

"Prolog"  (1)

"Prolog" 在每次计算之前执行一些小指令:

"Epilog"  (1)

"Epilog" 在每次计算后执行一些小指令:

指令的选项  (10)

"Command"  (3)

当只提供一串 Ruby 代码时,直接执行命令:

相当于用以下形式编写命令:

File 封装运行文件中的代码:

相当于用以下形式编写命令:

将代码放入 CloudObject 中:

从云端直接运行:

相当于用以下形式编写命令:

"ReturnType"  (1)

默认情况下,使用会话创建时指定的 "ReturnType" 执行该命令:

在指令中指定 "ReturnType",覆盖会话的 "ReturnType"

"Arguments"  (2)

"Arguments" 调用含有参数的 Ruby 函数:

当提供非列表参数时,将单个参数传递给函数:

如果需要传递一个列表作为第一个参数,则必须显式地用一个额外的列表将其封装起来:

可在 "Command" 中定义一个函数,并用 "Arguments" 调用它:

可用 Rule 得到同样的结果:

也可以通过创建 ExternalFunction 来传递参数:

"Constants"  (1)

"Constants" 在命令运行之前永久设置全局变量:

"TemplateArguments"  (3)

运行命令时可内嵌一个 TemplateExpression

可用 "TemplateArguments" 填充 TemplateSlot

当提供非列表参数时,将单个模板参数传递给模板:

如果需要传递一个列表作为第一个参数,则必须显式地用一个额外的列表将其封装起来:

可以命名模板插槽,并用 Association 将已命名参数传递给模板:

外部运算  (8)

"Eval"  (1)

运行表示 Ruby 中任意代码运算的 ExternalOperation

用第二个参数传递运算内容:

"Call"  (3)

定义一个在 Ruby 中创建函数的 ExternalOperation

通过运行 ExternalOperation "Call" 调用函数:

ExternalEvaluate 执行运算:

"Call" 运算的任何参数都可以是 ExternalOperation

还可以通过执行以下操作直接在 ExternalEvaluate 中传递参数:

结果相当于运行以下 Ruby 代码:

创建 Ruby 函数的 ExternalFunction

通过运行 "Call" 调用函数:

通过执行以下操作可以获得相同的结果:

创建 Ruby 函数的 ExternalObject

通过运行 "Call" 调用函数:

通过执行以下操作可以获得相同的结果:

或使用 ExternalObject 子值:

关闭会话:

"GetAttribute"  (2)

启动 Ruby 会话来处理日期:

返回一个 Date 对象的 ExternalObject

"GetAttribute" 提取年份属性:

结果相当于运行以下 Ruby 代码:

删除会话:

创建表日期的 ExternalObject

ExternalOperation 获取当前的年份:

对于大多数运算器,"GetAttribute" 是默认运算,可以省略 ExternalOperation

删除会话:

"SetAttribute"  (1)

启动 Ruby 会话来处理日期:

创建带有日期的对象:

将年份设为 2024:

查看年份是否被设为 2024:

结果相当于运行以下 Ruby 代码:

删除会话:

"Cast"  (1)

创建表示当前日期的 ExternalObject

"Expression" 以 Wolfram 语言表达式的形式返回对象:

也可以在 ExternalObject 子值中运行 Cast 运算:

符号 Expression 是完成相同运算的更简便的方式:

用字符串返回对象:

符号 String 是完成相同运算的更简便的方式:

ExternalObject 返回对象:

符号 ExternalObject 是完成相同运算的更简便的方式:

ExternalEvaluate 中使用 "ReturnType" 可以得到同样的结果:

删除会话:

应用  (1)

定义一个调用自定义 Ruby 函数的 Wolfram 语言函数:

关闭会话: