我正在学习C#atm并试图解决我书中描述的一个问题.写一个程序,计算和打印(精度为0.001)序列1 + 1/2 - 1/3 + 1/4 - 1/5 + ....我知道这是一个常见的问题,但我几乎失去了整整一天要解决它,但我不能单独做(也许我没有努力).
static void Main()
{
double sum = 0D;
double sum1 = 0d;
int i = 1;
while ( i <100)
{
i++;
if (i % 2 == 0)
{
sum1 = sum1 +(1 / i);
}
else
{
sum1 = sum1 -(1 / i);
}
sum = sum1 + sum;
Console.WriteLine(Math.Round(sum, 3));
}
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个匹配两个表达式和一个标识符的宏.如果不需要,我希望能够忽略标识符,但是如果我_在那里使用,编译器似乎会抱怨.
我的宏:
macro_rules! if_some {
($x:expr, $id:ident, $expr:expr) => {
match $x {
None => None,
Some($id) => Some($expr),
}
};
}
Run Code Online (Sandbox Code Playgroud)
我想做什么:
if_some!(obtain_an_option(), x, do_something_with(x))
Run Code Online (Sandbox Code Playgroud)
和
if_some!(obtain_an_option(), _, do_something())
Run Code Online (Sandbox Code Playgroud)
第二次通话失败.
我通过定义第二个if_some_!没有接收到标识符的宏来解决它(我也不能使用第二个模式).我确定有办法说"这里接受一个标识符或只是_.
也许已经有一个宏/功能(就像Option::map现在我想的那样)......不过现在它很好.
我需要读取带有标题和数据的Excel文件,并根据从文件中提取的标头和放置值在数据库(MySQL)中创建一个表.为此,我使用JDBC在DB Table中创建和插入数据(使用的预处理语句).
它工作得很好但是当记录数量增加时--suppose文件包含200000或更多记录 - 它会变慢.请指导我如何优化将数据插入数据库表的处理速度.
谢谢,Sameek
我正在尝试用 Rust 写一些东西(我喜欢它,但还没有太多经验),但发现了一个我不知道如何解决的障碍。
我的目的是生成一个异步任务,传递初始状态作为参数。异步任务将获取该值(它可以保留它的所有权)并进一步使用它。问题是初始值需要是通用的。我收到一个错误,抱怨 的生命周期StateT ,并且我无法让编译器知道我想将其移动/复制到异步块。
async fn start<StateT>(initial_value: StateT) -> impl futures::Future
where
StateT: Send,
{
tokio::spawn(async move {
process(initial_value);
})
}
Run Code Online (Sandbox Code Playgroud)
我尝试制作StateT: Copy + Send + Sync等,但它不喜欢它。只能'static工作,但我想这是不对的(这不是我要传递的常量,而是一些任意的结构)。
错误信息是:
error[E0310]: the parameter type `StateT` may not live long enough
--> src/workflow2.rs:7:5
|
7 | / tokio::spawn(async move {
8 | | process(initial_value);
9 | | })
| |______^ ...so that the type `StateT` will meet its required lifetime bounds
|
help: consider adding an …Run Code Online (Sandbox Code Playgroud) rust ×2
async-await ×1
c# ×1
generics ×1
java ×1
lifetime ×1
macros ×1
mysql ×1
rust-macros ×1