Algorithm

LeetCode 007 - Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer. When the reversed integer overflows, return 0.

def reverse(x):
    res = 0
    if x>=0:
        res = int(str(x)[::-1])
    else:
        res = -int(str(x)[:0:-1])
    return res if res >= -2**31 and res <= 2**31-1 else 0


关于 overflow 的判断,也可以使用 Python 内置的 number.bit_length() 方法。

Review: ES6 Generator

参考文章:A Simple Guide to Understanding Javascript (ES6) Generators

Generator 和 Iterator 是 ES6 新增的语法。

Generator 函数使用形如 function* X() 或 function *X() 的方法定义。

Generator 函数执行时,每次遇到 yield 时会暂停执行,并返回 {value: X, done: false/done}。对使用 Generator 函数构造的变量调用 .next() 方法可以使 Generator 函数继续执行,并得到返回的 value 值。当 Generator 函数执行到最后一个 yield 或者遇到 return 时,返回{value: X, done: true}

另外,使用yield* otherGenerator() 可以将迭代委托到下一个 otherGenerator 函数。简单来说,会先同步完成 yield* 表达式中的 Generator 函数,再继续运行外层函数。

需要注意的是,当使用 for...of 对 Generator 进行迭代时,会忽略 return 语句。因此,尽量避免在 Generator 函数中使用 return

Tips

JavaScript 中需要判断某个变量是否为 null 或 undefined 时,可以使用 x != null 判断。JavaScript 的自动类型转换还是有用的 :)

在 TypeScript 中,我们可能会遇到某个变量的类型不能为 undefined 的情况。但是 TS 本身没有『非』这个逻辑,一个曲线的方法是使用类型别名。

type defined = string | number | boolean | symbol | object | null

Share

JSON5

JSON5 是 JSON 的一个超集,通过引入部分 ECMAScript 5.1 的特性来扩展 JSON 的语法,以减少 JSON 格式的某些限制。同时,保持兼容现有的 JSON 格式。

不过,目前中文互联网上似乎鲜有 JSON5 介绍。于是做了点微小的工作,简单翻译了一下。

JSON5 - 更人性化的 JSON

JSON-RPC lite

一个轻量的 JSON-RPC 模块。支持在浏览器 / Node.js 环境中解析和构建 JSON-RPC 消息。使用 TypeScript 重写,支持类型显示。

标签: ARTS

添加新评论