您好我正在学习clojure,我想了解当我打字时发生了什么
(map println '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)
我期待类似的东西
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
但我明白了
(1
2
nil 3
nil 4
nil nil)
Run Code Online (Sandbox Code Playgroud)
这只是我编写的一个例子.我只是想了解发生了什么.也许与懒惰有关?
是否可以对枚举的变体进行通配符,同时仍然计算其关联数据?
enum BAR {
BAR1,
BAR2,
}
enum BAZ {
BAZ1,
BAZ2,
BAZ3,
}
enum FOO {
FOO1(BAR, BAZ),
FOO2(BAR, BAZ),
FOO3(BAR, BAZ),
//...
}
impl FOO {
pub fn getBar(&self) -> &BAR {
return match self {
FOO::FOO1(bar, _) => bar,
// _(bar, _) => bar,
}
}
}
Run Code Online (Sandbox Code Playgroud)
枚举 FOO 有 50 多个变体。该产品线FOO::FOO1(bar, _) => bar,满足了我的需要,但列出所有 50 个变体会非常难看,因为所有手臂基本上看起来都一样。是否存在某种形式的_(bar, _) => bar,变体被通配符但相关数据仍然可检索的情况?