javascript - 如何在Javascript中建立相互递归结构?

标签 javascript recursion mutual-recursion

我想知道 Javascript 中是否可以有相互递归的对象,如果可以,如何实现?

目标:

我想要三个对象:

  1. 表示具有两个值 TrueFalseBoolean 类型
  2. 表示 Boolean 类型的 True 对象
  3. 代表 Boolean 类型的 False 对象

诀窍是我想询问 True 对象的类型,我应该返回 Boolean 对象,并且我想询问 Boolean > 对象其值,我应该返回 2 个对象:True 对象和 False 对象。

但它应该完全是相互递归的,因为我得到了这样的东西(尽管它不一定必须完全像这样):

True 
// {name : "True", type : [Object object]}

False
// {name : "False", type : [Object object]}

Boolean 
// {name : "Boolean", values : [Object object]}

Boolean.values  
// {True: [Object object], False: [Object object]}

True.type
// {name : "Boolean", values : [Object object]}

False.type
// {name : "Boolean", values : [Object object]}

Boolean.values.True 
// {name : "True", type: [Object object]}

Boolean.values.True.type 
// {name : "Boolean", values : [Object object]}

Boolean.values.True.type.values 
// {True : [Object object], False: [Object object]}

等等...

如果有帮助,他们应该满足以下属性:

Boolean === Boolean.values.True.type 
Boolean === Boolean.values.True.type.values.True.type

True === Boolean.values.True
True === True.type.values.True.type.values.True.type.values.True

False === Boolean.values.False
False === True.type.values.False

并且做到这一点的能力应该是无限的

注意

这些可以是函数而不是对象。而且调用不必完全像这样。

最佳答案

给你:

//Define the top level objects but avoid recursion
var True = {};
var False = {};
var Boolean = {
    values: {
        True: True,
        False: False
    }
};

//Create the recursion
True.type = Boolean;
False.type = Boolean;

关于javascript - 如何在Javascript中建立相互递归结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935825/

相关文章:

optimization - 递归开销-它有多严重?

java - 检测递归的算法

haskell - 如何加速(或内存)一系列相互递归的函数

javascript - 如何修复 css({ float : 'left' })

javascript - 使用 AngularJS $watch 更改数组中的值

Python - 如何在没有全局变量的情况下递归编写

f# - 整理我的相互递归类型

F#:类型和函数之间可以相互递归吗?

javascript - 只返回最里面的promise的catch并处理其他的

Javascript 获取包含双花括号的元素