作为一个玩具示例,让我们使用斐波那契数列:
def fib(n: int) -> int:
if n < 2:
return 1
return fib(n - 2) + fib(n - 1)
Run Code Online (Sandbox Code Playgroud)
当然,如果我们尝试执行以下操作,计算机将会挂起:
print(fib(100))
Run Code Online (Sandbox Code Playgroud)
所以我们决定添加记忆功能。为了保持逻辑fib
清晰,我们决定不改变fib
,而是通过装饰器添加记忆:
from typing import Callable
from functools import wraps
def remember(f: Callable[[int], int]) -> Callable[[int], int]:
@wraps(f)
def wrapper(n: int) -> int:
if n not in wrapper.memory:
wrapper.memory[n] = f(n)
return wrapper.memory[n]
wrapper.memory = dict[int, int]()
return wrapper
@remember
def fib(n: int) -> int:
if n < 2:
return 1
return fib(n - 2) …
Run Code Online (Sandbox Code Playgroud) 这是关于Dart中int.parse的几个问题......
我知道在Dart中我们可以将字符串解析为int并使用以下内容捕获异常:
try {
n = int.parse(input.value);
// etc.
} on FormatException {
// etc.
}
Run Code Online (Sandbox Code Playgroud)
(没关系.)
在文档中,有以下对int.parse的描述:
int parse(String source, int radix, int onError(String source))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用带有多个参数的int.parse时,我收到了编辑关于使用额外参数的投诉.我误解了文档吗?例如,如何设置基数?
我正在使用Dart开发个人白板Chrome应用程序,有时能够快速复制和粘贴图像(例如演示文稿中的幻灯片,图表或讲义),以便我可以在图像上添加注释在教课或演讲时.
如何将存储在剪贴板上的图像粘贴到Dart中的画布元素上?
BigInt
在 Dart 2(Dart VM 版本:2.0.0-dev.50.0)中玩这个类,我遇到了以下问题:
BigInt x = 5;
print(x % 3); // 2
print(x ~/ 3); // 1
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好,但是......
当我尝试访问这些方法时,例如:
print(x.pow(2));
Run Code Online (Sandbox Code Playgroud)
我得到一个NoSuchMethodError: Class 'int' has no instance method 'pow'异常。似乎x
被视为香草味int
......
此外,如果我尝试x
更明确地实例化:
var x = new BigInt.from(5);
Run Code Online (Sandbox Code Playgroud)
我得到NoSuchMethodError: Class 'int' has no instance getter '_used'。
我误解了文档吗?具体来说,我们如何将int
, like5
或['a', 'b', 'c'].length
, 转换为BigInt
对象?
编辑:虽然这并没有解释为什么BigInt x = 5
然后这样的表达式x % 3
不会产生错误并按预期工作,但这似乎只是由于BigInt …
有时,在 Dart 中遍历复杂的 json 文件时,如果我们能告诉我们的编辑器预期的结构是什么,以便我们可以最好地利用编辑器的智能代码完成功能,那就太好了。
作为一个玩具示例,请考虑脚本writer.dart:
import 'dart:convert' show json;
main() {
Map<String, num> myMap = {"a": 1, "b": 2, "c": 3};
print(json.encode(myMap));
}
Run Code Online (Sandbox Code Playgroud)
假设我们使用 writer.dart 创建一个 json 文件:
dart writer.dart > data.json
Run Code Online (Sandbox Code Playgroud)
我们有另一个名为reader.dart 的脚本,它将读取此文件并将数据理想地解释为一个Map<String, num>
实例:
import 'dart:io' show File;
import 'dart:convert' show json;
main() async {
Map<String, num> myMap = json.decode(await File("data.json").readAsString());
}
Run Code Online (Sandbox Code Playgroud)
但是,此脚本会引发异常type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, num>'
。
像以下这样的幼稚尝试也不起作用:
var myMap = json.decode(await …
Run Code Online (Sandbox Code Playgroud)