在定义时分配反函数

时间:2017-10-24 17:40:26

标签: j

我写了一个小玩具十六进制转换器;我有编码和解码功能:

encode16 =: { & '0123456789ABCDEF' @ ((6 $ 16) & #:)
decode16 =: (16 & #.) @ ('0123456789ABCDEF' & i.)

我希望他们互相反向,所以我可以编写代码并看到这样的内容:

   119&+ &. decode16 '03A8D8'
03A94F

我的第一个猜测是添加这个:

encode16 =: encode16 :. decode16

这会产生递归,所以我选择了这个:

encode16basic =: { & '0123456789ABCDEF' @ ((6 $ 16) & #:)
decode16basic =: (16 & #.) @ ('0123456789ABCDEF' & i.)

encode16 =: encode16basic :. decode16basic
decode16 =: decode16basic :. encode16basic

这是处理反函数的典型方法吗?人们通常在定义时分配反函数吗?是否真的有必要为编码和解码功能分配反转?看起来似乎是这样,因为文档没有另外说明。

1 个答案:

答案 0 :(得分:2)

定义它们的一个选项可能是:

self.navigationItem.backBarButtonItem!.title

您可以按如下方式检查动词的正面:

   encode16=: ({&'0123456789ABCDEF'@((6$16)&#:)) :. ((16&#.)@('0123456789ABCDEF'&i.))
   decode16=: encode16^:_1

   119&+&.decode16 '03A8D8'
03A94F

查看wiki page for Obverse了解更多详情。