Dyalog APL:能否实现内联编辑Object类Name字段的函数?
Dyalog APL:实现_People.Name的内联编辑输出函数
可以实现需求,以下是基于你提到的Object类的具体解决方案:
前提假设
假设你已通过原问题中的方法创建了_People对象实例,示例代码如下:
∇ r←NewObject fields values r←⎕NEW 'Object' :For i :In ⍳≢fields r.(⍎fields[i])←values[i] :EndFor ∇ _People ← NewObject 'Name Age' ('Alice' 30)
内联编辑函数实现
∇ EditPeopleName ⍝ 输出_People.Name并支持内联编辑 currentName ← _People.Name ⍝ 输出当前值,不换行 ⎕←'当前姓名: ',currentName ⍝ 用ANSI转义序列将光标移至当前姓名的起始位置 ⎕←⎕UCS 27,'[',(11+≢currentName),'D' ⍝ 调用⎕TSI获取内联输入,默认值为原姓名 newName ← ⎕TSI currentName ⍝ 非空输入则更新姓名 :If newName ≠ '' _People.Name ← newName :EndIf ⎕←'更新后的姓名: ',_People.Name ∇
功能说明
⎕TSI是Dyalog APL的终端字符串输入函数,支持在当前光标位置直接编辑默认值,无需换行输入,完全匹配你的需求。- ANSI转义序列用于调整光标位置,让编辑操作看起来是直接修改原输出内容,优化交互体验(该序列在支持ANSI的终端和Dyalog RIDE环境中生效)。
- 若用户输入为空,将保留原姓名值,避免误清空。
内容的提问来源于stack exchange,提问作者конструктор
相关产品推荐
相关产品推荐

