我正在学习Rust,看起来非常有趣.我还不是很熟悉"匹配",但它看起来相当完整.我使用下面的代码(下面)将String转换为i64,其中包括注释掉的行"None"代替下一行"_".我想知道在没有下划线的情况下发生了什么事情,或者"无"可能是一个全能的事情.调用代码需要一个正i64,所以否定会导致输入无效(在这种情况下).我不确定是否可以使用此示例在返回中指示错误,而不是使用结构.
没有下划线作为匹配项,"无"会捕获所有,是否可以使用而不是下划线?
是否可以在不使用结构作为返回值的情况下在这样的函数中返回错误?
一般情况下,使用"匹配"进行不匹配是否可能?如果是,会发生什么?
在下面的示例中,使用下划线和使用"None"之间有什么区别吗?
示例代码:
fn fParseI64(sVal: &str) -> i64 {
match from_str::<i64>(sVal) {
Some(iVal) => iVal,
// None => -1
_ => -1
}
}
Run Code Online (Sandbox Code Playgroud) 下面的代码不再适用于Dart M3,我找不到新语法.
有人可以建议吗?
#import('dart:uri');
String encodeMap(Map data) {
return Strings.join(data.getKeys().map((k) {
return "${encodeUriComponent(k)}=${encodeUriComponent(data[k])}";
}), "&");
}
Run Code Online (Sandbox Code Playgroud) 我有一个相当冗长的命令行程序,需要用户输入参数,然后使用这些参数进行处理.我想做的是将程序分成交互式和非交互式.我试图这样做,并打算让非交互式程序"调用"交互式程序并使用结果(参数),基于这些参数进行处理.程序的非交互部分在处理时在控制台上显示结果.我看过Process.run和Process.start,但显然他们没有这样的功能.还有一个类似的问题是大约12个月大,所以我觉得值得再问一次.
我和Dart玩了一点,我认为这很棒.据我所知,它可以输出原生JS,并且谷歌可能会在浏览器中支持虚拟机.由于其他浏览器供应商可能不支持Dart VM,是否可以在客户端计算机上安装Dart VM以便在国外浏览器中使用?
我正在Go for sql数据库(Postgres和Mysql)中编写一个测试程序.我不太了解包的"_"选项,但我正在使用它(见下文).
我想要做的是编译一次,为一个RDBMS和多个RDBMS使用多个sql驱动程序,并在运行程序时,选择要使用的驱动程序和RDBMS.我不确定这是否可行.目前我使用一个Postgres和一个Mysql驱动程序编译,然后选择我在运行时使用的那个(Postgres/Mysql).这工作正常,但我需要记住编译的驱动程序.能够为一个RDBMS编译多个驱动程序然后在运行时选择使用哪个驱动程序将是一件好事.我想那是不可能的.或者,最好能够在编译时选择使用哪些驱动程序,并在运行时知道正在使用哪些驱动程序.如果没有这些设施之一,可以进行测试.
是否可以使用编译器选项来选择特定的驱动程序,然后在运行时知道正在使用哪个驱动程序?另一种选择显然是编辑程序来表明这一点.
导入的示例如下:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
////_ "github.com/lib/pq"
_ "github.com/lxn/go-pgsql"
........
Run Code Online (Sandbox Code Playgroud) 我最近开始看Rust.我认为对于应用程序,我宁愿只使用两种数字类型(通常是i64和f64),因为我认为我的代码可以运行的任何东西都是64位的,我相信每一行代码都很重要,因为简洁很重要,我不想不断地从例如转换数字.i32/int到i64等
在Win8-64上使用Rust 0.8:(IE:rust 0.8 host:i686-pc-mingw32).
我写了一个小测试程序,看看性能差异是什么.鉴于产生的时间安排,我想确定为什么存在差异.根据我查看的文献,Rust将使用处理器使用的整数类型来寻址内存.据我所知,在64位处理器(Intel Core-i5)上,即64位.然而,看起来Rust上的"int"使用的是32位,而且32位看起来比64位更快.虽然我认为性能的差异(考虑到测试中的迭代次数)对于应用程序而言相对微不足道,但它仍然提出了所指出的问题.IE:32位int用于64位处理器,为什么64位机器上的32位更快?
我的测试程序的结果如下.指示的时间在许多重复上是一致的:
1000000000 iters (i64 iters and i64 simple addition) .....
Total Elapsed time = 3237.86 ms
Result from i64 addition = 2000000000
1000000000 iters (int iters and int simple addition) .....
Total Elapsed time = 2353.45 ms
Result from int addition = 2000000000
1000000000 iters (i32 iters and i32 simple addition) .....
Total Elapsed time = 2375.52 ms
Result from i32 addition = 2000000000
Run Code Online (Sandbox Code Playgroud)
使用的代码如下:
fn fTesti64Add(mut iIterMax:i64) -> i64 {
println(fmt!("\n%s iters …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于此的帖子和文章(异步和期货),我不确定目前的情况如何.我尝试了许多不同的变化.
我按顺序尝试以下代码:
import 'dart:async' as async;
import 'dart:io';
import 'dart:math';
import 'package:postgresql/postgresql.dart' as pg;
var uri = 'postgres://admin:admin@localhost:5432/testdb';
List lgNames = ['Peter', 'Robert', 'Mary', 'Marg', 'William',
'Vern', 'Dermot', 'Monty', 'Peggy', 'Sue', 'William'];
List lgUsed = [];
Random rand1 = new Random();
void main() {
pg.connect(uri).then((oDb) {
print ("Connected to database");
fClearTable(oDb).then((String sResult){
print(sResult);
for (int iPos = 0; iPos < 3; iPos++) {
fListTable(oDb, "Select before Insert number ${iPos+1}").then((String sResult) =>
print(sResult));
fInsertData(oDb, "Insert Number ${iPos+1}").then((String sResult) =>
print(sResult));
fListTable(oDb, …Run Code Online (Sandbox Code Playgroud) linuxfood为sqlite3创建了绑定,我很感激.我刚刚开始学习Rust(0.8),我正在努力理解这段代码到底在做什么:
extern mod sqlite;
fn db() {
let database =
match sqlite::open("test.db") {
Ok(db) => db,
Err(e) => {
println(fmt!("Error opening test.db: %?", e));
return;
}
};
Run Code Online (Sandbox Code Playgroud)
我基本上了解它在做什么.它试图获取数据库连接并测试错误.我不明白它是如何做到的.
为了更好地理解它,我想在没有match声明的情况下重写它,但我没有这方面的知识.那可能吗?是否sqlite::open()返回两个变量,或只有一个?
如果没有match声明,这个例子如何以不同的方式写出来 我不是说这是必要或可取的,但它可以帮助我学习语言.
我在Rust中使用了"匹配",我已经搜索了这个问题的解决方案,因为我确信必须有一个解决方案.在以下示例中,在生成的随机数不为零的情况下,我希望将生成的随机数分配给变量i_bal.换句话说,我不是根据我的例子分配"23456",而是想在匹配中分配正在测试的实际随机数.我知道可能有更好的方法来解决这个问题,但是,我想知道使用这种方法的解决方案.
示例:
let i_bal: i64 = match std::rand::task_rng().gen() {
0 => 1234,
_ => 23456
};
Run Code Online (Sandbox Code Playgroud) 这是我遇到的问题的一个简单示例。给定以下示例,如何从类外部获取“counter”的值?
class Counter extends StatefulWidget {
@override
_CounterState createState() => _CounterState();
}
class _CounterState extends State<Counter> {
int counter = 0;
void increaseCount() {
setState(() => this.counter++);
print("New count = $counter");
}
Widget build(context) {
return new RaisedButton(
onPressed: increaseCount,
child: new Text('Tap To Add'),
);
}
}
Run Code Online (Sandbox Code Playgroud)