首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dyalog APL中的"APL对象符号“

Dyalog APL中的"APL对象符号“
EN

Stack Overflow用户
提问于 2017-05-29 12:57:10
回答 4查看 421关注 0票数 5

如何将任何Dyalog APL值转换为可以传递给以获得相同值的字符向量?

这看起来应该是什么样子:

代码语言:javascript
复制
      x←2 3⍴⍳6
      x←1,⊂x
      x←x,⊂'foo'
      y←desired_function x
      DPX y
┌→─────────────────┐
│1,(⊂2 3⍴⍳6),⊂'foo'│
└──────────────────┘
      x≡⍎y
1

更新

其思想是将一个值转换为一个可人工编辑的APL源代码,以便在找到一个新的有问题的场景时将其插入到一个单元测试函数中。我希望这些测试场景在APL源代码中,而不是在文件中,因为在我使用的框架中,源代码由版本控制系统很好地管理,而文件则不是。我希望它是可人工编辑的,而不仅仅是序列化的,以便在参数/结果发生变化时更容易修改现有的测试场景。

EN

回答 4

Stack Overflow用户

发布于 2017-07-12 18:44:08

⎕SE.Dyalog.Utils.repObj

例如:

代码语言:javascript
复制
      x←2 3⍴⍳6
      x←1,⊂x
      x←x,⊂'foo'
      y←⎕SE.Dyalog.Utils.repObj x
      ]Display y
┌→─────────────────────┐
│1 (2 3⍴1-⎕io-⍳6) 'foo'│
└──────────────────────┘
      x≡⍎y
1

在网上试试!

票数 4
EN

Stack Overflow用户

发布于 2017-06-03 12:26:09

在我看来,Execute & "transfer form“并不是最佳解决方案,原因如下:

  • 复杂的结构很快就很难读懂。
  • 与其他解决方案相比,Execute是一个相对较重/效率较低的调用工具。
  • 如果您不小心,您打开自己的“注入”攻击,恶意代码中的文件应该包含常量,但正在执行时,您的应用程序启动。

根据数据的外观,JSON可能是一个很好的选择--它是为此设计的一种格式:

在Dyalog 15.0中:

代码语言:javascript
复制
       fromJSON←7159⌶ ⋄ toJSON←7160⌶ 
       (namespace←⎕NS '').life←42
       toJSON (⍳4) 'Hello' namespace
[[1,2,3,4],"Hello",{"life":42}]

JSON的缺点是它不能表示高维数组。所以如果你需要矩阵的话,你需要稍微按摩一下:

代码语言:javascript
复制
       toJSON ↓3 4⍴⍳12 
[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
       ↑fromJSON '[[1,2,3],[5,6,7]]'
1 2 3
5 6 7

在这个月底即将发布的16.0版本中,实验性的I已经成为一个系统函数⎕JSON。

票数 3
EN

Stack Overflow用户

发布于 2017-05-31 14:15:57

我不知道是否有一种使用⍎的方法,但是我要提到Dyalog版本15.0有2I-Beams来序列化和反序列化。

http://help.dyalog.com/15.0/Content/Language/Primitive%20Operators/Serialise%20Array.htm

例如:

代码语言:javascript
复制
]disp x
┌→┬─────┬───┐
│1│0 1 2│foo│
│ │3 4 5↓   │
└─┴~───→┴──→┘

   y← 0(220⌶) 0(219⌶) 1(219⌶) 1(220⌶) x

  ]disp y
┌→┬─────┬───┐
│1│0 1 2│foo│
│ │3 4 5↓   │
└─┴~───→┴──→┘

      y ≡ x
1

此外,您可能希望加入我们的论坛,因为您会接触到更多的Dyalog APL用户,如果您问您的问题在那里。

http://www.dyalog.com/forum/

致以敬意,

文斯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44243094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档