小编ste*_*ger的帖子

ES6 模块 - 为什么我可以在声明之前使用 const?

我尝试寻找有关此确切场景的解释,但找不到任何内容。我有一个如下所示的模块(简化版):

export default function(name) {
  return map[name];
}

const map = {
  'a': 'b',
  'b': 'c'
};
Run Code Online (Sandbox Code Playgroud)

显然,上面的 const 定义已被提升,但在函数中使用时应该是未定义的。我试图找到一个确切的解释来解释为什么这个函数在导入和使用时有效。难道不应该抛出引用错误吗?我唯一能想到的是整个模块是在调用此函数之前加载的,但是这种情况到底是如何发生的或者在哪里解释了这个特定行为?任何信息将不胜感激。

import export constants ecmascript-6 es6-modules

5
推荐指数
2
解决办法
2543
查看次数

链接列表连接

为分配创建链接列表和一个需求是一个名为concat的方法,它接受一个list参数并将其附加到当前列表的末尾.这个方法没有必要使用递归,但我们的程序应该大量使用递归.我只是想知道是否有可能为此提出递归算法.我们的列表类只有一个头节点,没有别的,它们没有双重链接.

我当前的尝试只能递归地附加第一个值.我知道它做错了什么,但我无法想出解决方案.第一种方法是在列表中实际调用的方法,其中列表被传递到"连接".然后我尝试找到列表的尾部并将它们传递给递归方法.这种"包装器"方法是我们递归方法的强制要求.这是我的尝试,但显然失败了,因为一旦所有调用从堆栈中弹出然后重新进入concat的递归调用,我就无法将节点引用"pt"推进到列表中的下一个节点.如果这可能的递归,可以请你给我一个如何推进这一价值减记第一个列表,重新进入递归调用或可能对这个问题只是一个更好的一般方法的想法?谢谢你的时间.

public void concat(MyString list1) {
    CharacterNode tail = null, pt = list1.head;
    // Find the tail of the list
    if (pt == null) {
    } else if (pt.getNext() == null) {
        tail = pt;
    } else {
        while (pt.getNext() != null) {
            pt = pt.getNext();
        }
        tail = pt;
    }
    list1.head = concat(list1.head, tail, list1.head);
}
private static CharacterNode concat(CharacterNode lhead, CharacterNode tail, CharacterNode pt) {
    // Pass in smaller list every …
Run Code Online (Sandbox Code Playgroud)

java recursion linked-list

2
推荐指数
1
解决办法
1万
查看次数