我有一个List<String>,我需要List<dynamic>在Dart 2中将其更改为.
首先,我尝试了这段代码,但它不起作用:
var str_list = ["aa", "bb"];
// fails - is not dynamic
// gives List<String>
List<dynamic> target_list_0 = str_list;
Run Code Online (Sandbox Code Playgroud)
后来,我尝试了这两种方式:
// succeeds - is dynamic
// gives List<dynamic>
var target_list_1 = [] + str_list;
// succeeds - is dynamic
// gives List<dynamic>
var target_list_2 = List<dynamic>.from(str_list);
Run Code Online (Sandbox Code Playgroud)
它有效,但我不确定它是解决问题的最佳(或惯用)方法.我想把Dart-2代码写得尽可能干净,你能帮忙吗?
编辑
@matanlurey问清楚这个模式是必要的,以及我如何使用它.
我正在开发类似twitter但更复杂的东西(不仅是#hashtags和@mentions,而是具有内部结构的单词).因此,我对源文本进行了一些修改,然后用空格(或括号)将其拆分为单词,然后逐字逐句检查.如果单词是特殊的,我将字符串更改为地图(包含已解析的信息).更改在列表中就地发生.这就是我需要的地方dynamic.我有这个源代码:
var split_regexp = new RegExp(r"[^\s\(\)]+|[\s\(\)]+");
var body_matches = split_regexp.allMatches(body_part);
var body = [] + body_matches.map(
(m) => m.group(0)
).toList();
// ... processing …Run Code Online (Sandbox Code Playgroud) 我正在努力将名称传递给一个定义了默认参数值的函数:
import std.stdio;
void main() {
void foo(int x=1, int y=2, int z=3) {
writefln("x=%s, y=%s, z=%s", x, y, z);
}
foo(10, 20, 30); // ok, prints: x=10, y=20, z=30
foo(z=30); // Error: undefined identifier 'z'
}
Run Code Online (Sandbox Code Playgroud)
这是一个非常基本的需求.这样的函数可以有10个或更多参数,并且可以使用不同的参数集多次调用.每次列出所有的args是难以忍受的 - 它需要精确的位置知识,甚至可以在我的应用程序的新版本中更改.或者我的应用程序的新版本可以更改默认值,我必须通过我的所有源代码来更改它.
我认为基本的东西必须是像D这样全面的语言.
如何在julia中打印嵌套的dicts(或其他数据结构)?例如:
xx = Dict(
"a"=>77,
"b"=>55,
"c"=> Dict(
44=>"alfa",
55=>"beta",
66=>Dict(
"x"=>999,
"y"=>888
)
)
)
Run Code Online (Sandbox Code Playgroud) 我想制作一个 hello world Web 应用程序,能够正确捕获模板错误。所以我需要缓冲响应但不知道该怎么做。我已经整理了这段代码。这是在 golang 中缓冲响应的方法吗?
func get_handler(w http.ResponseWriter, r *http.Request) {
buf := new(bytes.Buffer)
err := templates.ExecuteTemplate(buf, "hello.html", nil)
if err != nil {
fmt.Println(err.Error())
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Write([]byte(buf.String()))
}
Run Code Online (Sandbox Code Playgroud)