我正在尝试生成素数.代码需要存储所有生成的素数(以生成下一个),有一些私有函数来帮助和一个公共函数(generate_next_prime).
在Java或C++中,我会编写一个PrimesGen类,但在Rust中,结构中不能有私有变量.在Python中我可能会编写一个PrimesGen模块,但在Rust模块中不能有变量.
此代码编译并运行:
struct PrimesGen {
primes_so_far: Vec<i32>,
next_candidate: i32,
}
impl PrimesGen {
pub fn new() -> PrimesGen {
PrimesGen {
primes_so_far: vec![],
next_candidate: 2,
}
}
}
fn main() {
let pg: PrimesGen = PrimesGen::new();
println!("{}", pg.next_candidate);
}
Run Code Online (Sandbox Code Playgroud)
那我该怎么办?
我有一个货物项目包括三个文件在同一目录下:main.rs,mod1.rs和mod2.rs.
我想从导入功能mod2.rs,以mod1.rs同样的方式,我会从导入功能mod1.rs来main.rs.
我已经阅读了所需的文件结构但我没有得到它 - 命名所有导入的文件mod将导致编辑器中的轻微混淆,这也只是使项目层次结构复杂化.
有没有像在Python或C++中那样独立于目录结构导入/包含文件的方法?
main.rs:
mod mod1; // Works
fn main() {
println!("Hello, world!");
mod1::mod1fn();
}
Run Code Online (Sandbox Code Playgroud)
mod1.rs:
mod mod2; // Fails
pub fn mod1fn() {
println!("1");
mod2::mod2fn();
}
Run Code Online (Sandbox Code Playgroud)
mod2.rs:
pub fn mod2fn() {
println!("2");
}
Run Code Online (Sandbox Code Playgroud)
建立结果:
error: cannot declare a new module at this location
--> src\mod1.rs:1:5
|
1 | mod mod2;
| ^^^^
|
note: maybe move this module `src` to …Run Code Online (Sandbox Code Playgroud) 我正在使用 React Native 和 TypeScript 编写应用程序,并使用 React Navigation 进行路由。
在我下载的示例项目中,它们用于StackNavigator({...})创建导航器,但是当我这样做时,npm start我看到一条警告,指出该项目StackNavigator已弃用,我应该createStackNavigator改用。createStackNavigator也是我在在线教程中看到的功能。
问题是使用时createStackNavigator出现错误:
[ts] Module '".../.../..."' has no exported member 'createStackNavigator'.
Run Code Online (Sandbox Code Playgroud)
我查了一下,index.d.ts路径中的文件确实没有这样的成员。我尝试过,npm install @types/react-navigation@latest但这也无济于事。
我该怎么做才能使用createStackNavigator?还是我应该求助于已弃用的StackNavigator?
我刚刚开始摆弄 Flutter,我无法理解StatefulWidget. 我在教程等中看到的所有这些小部件都可以实例化 aState<MyWidget>并让它完成所有工作。
例如,从这个(官方)教程:
class RandomWords extends StatefulWidget {
@override
createState() => new RandomWordsState();
}
class RandomWordsState extends State<RandomWords> {
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是为什么要这样构建以及外部类的用途是什么(在我的示例中RandomWords)。
提前致谢。
我正在阅读Trait Objects 需要对象安全,但我不明白泛型类型参数的问题。
使用 trait 时用具体类型参数填充的泛型类型参数也是如此:具体类型成为实现 trait 的类型的一部分。当通过使用 trait 对象忘记类型时,无法知道用什么类型填充泛型类型参数。
我正在尝试编写一个示例,但我无法理解。什么是泛型类型参数?
我试图从一个参数化的 trait 中创建一个 trait 对象,但是一旦参数被赋予了一个具体的值,它就可以正常工作:
trait Creator<T> {
fn create(&self) -> T;
}
struct CreationHouse {
creators: Vec<Box<dyn Creator<u32>>>
}
struct NumCreator { seed: u32 }
impl Creator<u32> for NumCreator {
fn create(&self) -> u32 {
return self.seed;
}
}
fn main() {
let ch = CreationHouse{
creators: vec![Box::new(NumCreator{seed: 3})]
};
}
Run Code Online (Sandbox Code Playgroud)
(编译良好,除了“未使用”警告)
我不明白的是“使用特征时用具体类型参数填充的泛型类型参数”是什么意思,以及泛型类型怎么会丢失(因为特征“携带”它们自己)。如果你能写一个段落中描述的案例的例子,我将不胜感激。
我正在尝试在我的Kotlin应用程序中使用JUnit4实现测试(kotlin.test在我的Kotlin运行时库中似乎不存在,我现在不知道如何获得它).
但是,我只是通过使用Test注释遇到错误.
那是我的代码:
import junit.framework.*
class IntTest {
@Test <------------- This line
fun test1() {
}
}
Run Code Online (Sandbox Code Playgroud)
在指定的行上,Eclipse给出了一条错误消息:"This class does not have a constructor".
我不明白是什么问题.哪个类没有构造函数,为什么它有一个?
我在 Android Studio 中创建了一个 Flutter 应用程序,我想将“lib”目录(Dart 源文件所在的位置)的名称更改为“src”。
但是,当我这样做时,导入“package:/main.dart”失败。我怎样才能改变这一点?
我更改了 .iml 文件中的路径,项目编译并运行,但此测试文件仍然显示错误。
我正试图在Kotlin写一些小东西,但我遇到了找到数字的二次幂的问题Double.
根据这个,Double应该实现一个pow接收另一个的函数Double,但是当我尝试使用这个方法时我得到Unresolved reference: pow了一个错误.
这是我的示例代码:
fun main()
{
val d: Double = 1.1;
val d2: Double = d.pow(2.0); // Here's the error, on the token 'pow'.
println(d2);
}
Run Code Online (Sandbox Code Playgroud)
我找不到任何理由.此功能仅来自Kotlin 1.2,但Eclipse安装详细信息中的Kotlin记录说Kotlin language support for Kotlin 1.2.50.
我创建的项目,我更新了科特林插件之前,它是可能的项目,以科特林版本创建的1.2之前,但我不能在设置中找到的任何位置改变配置科特林版本,所以我想使用的版本是一个即安装1.2 .50
顺便说一句,Eclipse提供的错误图标是灯泡1的错误,表明存在可用的解决方案,但是当我点击图标时没有出现,这很奇怪.
如果有人能提出任何理由,那就太好了.
提前致谢.