V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aguesuka  ›  全部回复第 1 页 / 共 46 页
回复总数  902
1  2  3  4  5  6  7  8  9  10 ... 46  
没测过,不过思路应该没问题

type Tree = Array<TreeItem>
type RawNode = {
id: string
pid?: string
prev_id?: string
next_id?: string
[key: string]: any
}
interface LinkedNode<E> {
node: E,
firstChild?: LinkedNode<E>
nextNode?: LinkedNode<E>
}

function toTree<E, K, T>(elements: E[],
getId: (element: E) => K,
getParentId: (element: E) => K | undefined,
getPrevId: (element: E) => K | undefined,
createTreeNode: (element: E) => T,
appendChild: (parent: T, child: T) => void): T[] {
const linkedNodes: Map<K, LinkedNode<T>> = new Map();
elements.forEach(element => linkedNodes.set(getId(element), {node: createTreeNode(element)}));
const rootLinkedNode: LinkedNode<T>[] = []
for (let element of elements) {
const parentId = getParentId(element);
const id = getId(element)
const linkedNode = linkedNodes.get(id)!

if (parentId) {
const prevId = getPrevId(element)
if (prevId) {
const pervLinkedNode = linkedNodes.get(prevId);
console.assert(!!pervLinkedNode, `${prevId} is not found`)
pervLinkedNode!.nextNode = linkedNode
} else {
const parentLinkedNode = linkedNodes.get(parentId);
console.assert(!!parentLinkedNode, `${parentId} is not found`)
parentLinkedNode!.firstChild = linkedNode
}
} else {
rootLinkedNode.push(linkedNode)
}
}
for (let linkedNode of linkedNodes.values()) {
for (let child = linkedNode.firstChild; child; child = child.nextNode) {
appendChild(linkedNode.node, child.node)
}
}
return rootLinkedNode.map(linkedNode => linkedNode.node)
}


function test(){
const raw_nodes = [/**/]
const rootNodes :Tree = toTree<RawNode, string, RawNode>(raw_nodes,
node => node.id,
node => node.pid,
node => node.prev_id,
node => {
node.children = [];
return node;
},
(parent, child) => parent.children.push(child)
)
console.info(rootNodes)
}
28 线小县城, 小区没充电桩, 离最近的省会分别是 411, 483, 538 公里. 没得选, 只能油车.
170 天前
回复了 chengxiao 创建的主题 Linux 生态这玩意儿,还真得看大厂的支持
虽然但是 v 社就人数来说并不是大厂,而且相当一部分技术员工精力在于游戏制作和游戏本身。所以生态这东西比想象的还要简单。

所以什么时候 linux 玩炎孕才能播放 cg
保守主义(英语:conservatism ),是一种旨在促进和保护传统的社会制度和实践的文化、社会和政治哲学。[1][2]保守主义的核心原则因其所处的具体文化和文明的现状( status quo )而有所不同。保守派倾向于支持保证稳定性并逐渐演变的制度和实践[2],经常反对进步主义并寻求回归传统价值观。
@Biggoldfish 二极管, 只有左右两个极端
好歹换成 Haskell 吧, 21 世纪了还在用 sum type 代替 product type
@codehz 借你吉言, 今年 7 月已经超过了
day2 在播 bad apply
300 天前
回复了 unt 创建的主题 程序员 求问 MQTT 和 TCP 透传优劣
首先透传是什么意思, 比如电表和服务器不直接通信, 而是电表通过电线载波通信到集中器, 再由集中器通信到应用程序. 注意载波通信是利用输电线通信的. 那么电表发给集中器的报文如果直接发送给服务器, 就是透传. 而集中器中途做处理就不是透传.

抛开集中器的问题 mqtt 的缺点
1. mqtt 是发布订阅模式, 但是业务模型绝大部分是 rpc 模型.
2. mqtt 提供的功能看起来很美好, 比如一条消息只发一次, 最少发一次, 实际上没人敢依赖这个特性, 还是要实现幂等, 假设消息丢失.
@woxihejinghao 刻舟求剑, 租房搬家是上个版本了, 这个版本是蹲考公研老东西爆金币, 工作都没, 还买房结婚
351 天前
回复了 Rubbishsite 创建的主题 奇思妙想 想要谋求更好的发展真的是坏事吗?
"想要谋求更好的发展真的是坏事吗?"

这个标题挺离谱的, 实际上就是你妈是日子人你不是, 你尝试说服她失败了. 人格独立只是逃避问题, 不如学习一下说服日子人的话术
354 天前
回复了 funet 创建的主题 推广 知识付费 = 割韭菜 ?
卖课的人的一个标点符号都不要信
2023-03-08 15:05:18 +08:00
回复了 tonyzhu 创建的主题 OpenAI Chatgpt 聊天记录不见了,网友们炸锅了
我感觉 chatgpt 比以前变蠢了
osgi 也是配置 require-bundle 才能实现的. 也就是加载整个模块, 并且在模块的 MANIFEST 里指定依赖.
1930 年希尔伯特说 we must know, we shall know; 1931 年哥德尔不完备定理被证明. 但希尔伯特活到了纳粹灭亡的前夕.
想了半天程序员比策划重要的游戏, 只想出个 notia
2022-12-18 14:03:21 +08:00
回复了 yazinnnn 创建的主题 Java 2022 年冬月, Java 后端工程师拒绝使用 kotlin 的技术原因有哪些?
@Slurp 这次没有提到 「而随着 JDK15 的推出, kotlin 的接口也能被密封了」,看来是承认 kotlin 在密封接口慢半拍 JVM 了.「非要假设别人乱反射你?」是 kotlin 自己 7 年前不做密封接口的理由, 结果成我说的了.

被打脸了还嘴硬, 菜到觉得有 internal 就不用 sealed 了, 还把观点提炼错了
2022-12-18 04:31:46 +08:00
回复了 yazinnnn 创建的主题 Java 2022 年冬月, Java 后端工程师拒绝使用 kotlin 的技术原因有哪些?
@Slurp 链接贴脸上了还嘴硬

「而随着 JDK15 的推出, kotlin 的接口也能被密封了」下一句就是 「而且 JDK15 以前的运行时也支持这个特性」, 还要我试「 Kotlin 1.7 JDK8 能不能编译密封接口」.下次和别人対线麻烦看全再回.
2022-12-16 14:07:18 +08:00
回复了 yazinnnn 创建的主题 Java 2022 年冬月, Java 后端工程师拒绝使用 kotlin 的技术原因有哪些?
展开说下关于 kotlin 的 sealed interface
https://www.reddit.com/r/Kotlin/comments/4io0q5/i_can_has_sealed_interface/
7 年前是这么说的

>> Kotlin does not support sealed interfaces because there is no way to prevent Java classes from implementing the same interface. Therefore, it's not possible to obtain the exhaustiveness guarantee that sealed classes provide.

而上面那个链接里面是这样的
2 年前
>> How about using Java 15 sealed interfaces, and limiting the feature only to that Java version or later?
>> There's no reason to limit this feature to Java 15.

我并没有说 kotlin 所做是错的, 恰恰相反: "etbrains 已经做得(当时认为的)最好了". 我很为不妙的地方是, 尽管已经做得最好了, 但还沿用了 5 年的反设计, 为什么
1  2  3  4  5  6  7  8  9  10 ... 46  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3517 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 100ms · UTC 11:05 · PVG 19:05 · LAX 04:05 · JFK 07:05
Developed with CodeLauncher
♥ Do have faith in what you're doing.