我有一个如下的枚举:
enum Foo {
A(X),
B(Y),
C(Z),
}
Run Code Online (Sandbox Code Playgroud)
其中 X、Y 和 Z 是实现该方法的结构体bar()
我希望能够bar在Foo枚举上定义一个方法,以便它调用其内部值的相应方法。现在我有这个:
impl Foo {
pub fn bar() {
match self {
Foo::A(f) => { f.bar(); }
Foo::B(f) => { f.bar(); }
Foo::C(f) => { f.bar(); }
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果可能的话,如何使用枚举做得更好?
我对 Clojure 很陌生,我试图从头开始实现(我不想使用任何模块)一个函数来从原始矩阵中获取某种三角矩阵,如下所示:
((1 2 3) (4 5 6) (7 8 9)) --> ((1 2 3) (5 6) (9))
Run Code Online (Sandbox Code Playgroud)
我可以使用递归来实现这一点,但如果可能的话,我也想在不使用递归的情况下实现这一点。任何想法将不胜感激。
我使用递归解决这个问题的方法是:
(defn get-sup-triang [m]
(cond
(empty? (rest (first m))) m
true (cons (first m) (get-sup-triang (rest (map rest m))))))
Run Code Online (Sandbox Code Playgroud)