"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 的形式返回结果
支持的外部运算
- ExternalOperation["Eval","code"] 表示 "code" 的外部运算.
- ExternalOperation["Eval","code",assoc] 表示 "code" 的外部运算,参数由 assoc 给出.
- ExternalOperation["Call",func,arg1,arg2,…] 调用函数 func,给定参数为 arg1、arg2、….
- ExternalOperation["GetAttribute",obj,"attr"] 获取 obj 的属性 "attr".
- ExternalOperation["SetAttribute",obj,"attr",val] 将 obj 的属性 "attr" 设为给定值 val.
- ExternalOperation["Cast",obj,"type"]将 obj 强制设为给定的 "type".
范例
打开所有单元关闭所有单元基本范例 (3)
类型 > 并从下拉菜单中选择 Ruby 可获取一个使用 ExternalEvaluate 进行计算的代码单元格:
范围 (28)
会话的选项 (9)
"ReturnType" (3)
对于 Ruby 运算系统,默认返回的类型是 "Expression":
对于 "Expression" 返回类型,会自动导入数字、字符串、列表和关联:
"String" 返回类型通过调用 Ruby 方法 to_s 返回结果字符串:
指令的选项 (10)
"Command" (3)
用 File 封装运行文件中的代码:
将代码放入 CloudObject 中:
"Arguments" (2)
用 "Arguments" 调用含有参数的 Ruby 函数:
如果需要传递一个列表作为第一个参数,则必须显式地用一个额外的列表将其封装起来:
可在 "Command" 中定义一个函数,并用 "Arguments" 调用它:
可用 Rule 得到同样的结果:
也可以通过创建 ExternalFunction 来传递参数:
"TemplateArguments" (3)
运行命令时可内嵌一个 TemplateExpression:
可用 "TemplateArguments" 填充 TemplateSlot:
如果需要传递一个列表作为第一个参数,则必须显式地用一个额外的列表将其封装起来:
可以命名模板插槽,并用 Association 将已命名参数传递给模板:
外部运算 (8)
"Eval" (1)
"Call" (3)
定义一个在 Ruby 中创建函数的 ExternalOperation:
通过运行 ExternalOperation "Call" 调用函数:
用 ExternalEvaluate 执行运算:
"Call" 运算的任何参数都可以是 ExternalOperation:
还可以通过执行以下操作直接在 ExternalEvaluate 中传递参数:
创建 Ruby 函数的 ExternalFunction:
创建 Ruby 函数的 ExternalObject:
或使用 ExternalObject 子值:
"GetAttribute" (2)
返回一个 Date 对象的 ExternalObject:
创建表日期的 ExternalObject:
用 ExternalOperation 获取当前的年份:
对于大多数运算器,"GetAttribute" 是默认运算,可以省略 ExternalOperation:
"Cast" (1)
创建表示当前日期的 ExternalObject:
用 "Expression" 以 Wolfram 语言表达式的形式返回对象:
也可以在 ExternalObject 子值中运行 Cast 运算:
符号 Expression 是完成相同运算的更简便的方式:
符号 String 是完成相同运算的更简便的方式:
用 ExternalObject 返回对象:
符号 ExternalObject 是完成相同运算的更简便的方式:
在 ExternalEvaluate 中使用 "ReturnType" 可以得到同样的结果: