gpt4 book ai didi

rust - 具有不同参数的特征的 new() 方法

转载 作者:行者123 更新时间:2023-11-29 07:56:44 25 4
gpt4 key购买 nike

我正在尝试使用具有不同内部参数的各种实现来创建特征:

pub trait ERP {
fn new() -> Self;
fn sample(&self) -> f64;
}

pub struct Bernoulli {
p: f64
}

impl ERP for Bernoulli {
fun new(p: f64) -> Bernoulli {
Bernoulli { p: p }
}

fun sample(&self) -> f64 { self.p } // Filler code
}

pub struct Gaussian {
mu: f64,
sigma: f64
}

impl ERP for Gaussian {
fun new(mu: f64, sigma: f64) -> Gaussian {
Gaussian { mu: mu, sigma: sigma }
}

fun sample(&self) -> f64 { self.mu } // Filler code
}

但我当然明白

error: method new` has 1 parameter but the declaration in trait
`erp::ERP::new` has 0

因为我必须在特征中指定固定数量的参数。

我也不能将 new 排除在 trait 之外,因为那样会给出

error: method `new` is not a member of trait `ERP`

我的动机是我希望公开的 ERP 接口(interface)保持一致除了方法,因为每个分布的必需参数都依赖于其实现背后的独特数学.有任何解决方法吗?

最佳答案

不要将 new 函数作为特征的一部分。不支持输入参数数量可变的函数。

关于rust - 具有不同参数的特征的 new() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com