具体问题
我需要将csv
变量从load_csv
函数传递到operations
函数。
代码
use polars::{
prelude::{CsvReader, SerReader},
frame::DataFrame,
error::PolarsResult
};
struct Boilerplate {}
impl Boilerplate {
fn load_csv(&self) -> PolarsResult<DataFrame> {
let csv = CsvReader::from_path("microsoft stock data.csv")?
.has_header(true)
.finish();
// println!("{:?}", csv);
csv
}
fn operations() {
}
}
fn main() {
let boilercode = Boilerplate{};
println!("{:?}", boilercode.load_csv());
}
我试过的(但是,没用(
- 在
main
函数中声明了csv
变量,然后尝试在impl
中访问它
您可以这样做,将csv存储在Boilerplate
的实例中。
struct Boilerplate {
csv: PolarsResult<DataFrame>
}
impl Boilerplate {
fn new() -> Boilerplate {
Boilerplate {
csv: CsvReader::from_path("microsoft stock data.csv")?
.has_header(true)
.finish();
}
fn operations(&self) {
// work with self.csv
}
}
fn main() {
let boilercode = Boilerplate::new()
println!("{:?}", boilercode.csv);
boilercode.operations()
}
它与您当前的实现有点不同,但我发现它更干净。它还让您可以自由地从其他方法调用impl
方法,同时在实例中保留csv
数据。像这样:
impl Boilerplate {
// --snip--
fn process(&self) {
self.operations()
}
fn operations(&self) {
// work with self.csv
}
}