如果我有许多选项
我天真的做法:
pub fn pick_first_option_available<T>(a: Option<T>, b: Option<T>, c: Option<T>) -> Option<T> {
match a {
Some(a) => Some(a),
None => match b {
Some(b) => Some(b),
None => match c {
Some(c) => Some(c),
None => None,
},
},
}
}
上面提到的一个明显问题是,它仅限于固定数量的选项(3)。我希望有一个更通用的函数。
这里有一个有点相关的线索,但它处理的是求和,而不是选择选项。
作为@DenysSeguret答案,您甚至可以将其抽象为通用数量的选项:
use std::array;
pub fn pick_first_option_available<T, const N: usize>(options: [Option<T>; N]) -> Option<T> {
array::IntoIter::new(options).reduce(Option::or).flatten()
}
游戏场
此外,它看起来不受欢迎,但仍然是一种方法,而不是使用简单循环的Option::或
:
use std::array;
pub fn pick_first_option_available<T>(a: Option<T>, b: Option<T>, c: Option<T>) -> Option<T> {
for option in array::IntoIter::new([a, b, c]){
if option.is_some() {
return option;
}
}
None
}
游戏场
是的,有一个简单而惯用的方法:
a.or(b).or(c)
你通常不会仅仅为此定义一个函数。
选项#或
我有两个表和 names表有以下列表: -男性姓名从nameID 1到nameID 10 -女性姓名从nameID 11到nameID 21 -两者都从nameID 23到nameID 31 性别表有三个属性: -女性 -男性 -两者 我正在使用引导选择选项,我想显示从nameID11到nameid21的名称,如果用户从gender选择选项中选择女性,等等,这是可能的吗?我看到其他帖子,我注意到他
问题内容: 我有两个选择: 如果我首先选择“水果”,该如何使用jQuery?第二个选择仅向我显示水果- 香蕉,苹果,橙子。如果我在第一个选择中选择“鸟”,则第二个选择仅显示“鸟”-老鹰,鹰。等等… 我试图用这段jQuery代码来做到这一点: 不幸的是,它几乎删除了所有内容,而且我不知道如何恢复一些选择。我也阅读了一些有关克隆的内容,但是在这种情况下我不知道如何使用它。 问题答案: $(“#sele
问题内容: 我得到了一个看起来像这样的select元素,现在我想将其打开并选择值为t3的选项,因此我尝试了如下操作: 现在,这将打开菜单,但没有选择选项标签,我想到了使用select()而不是click(),但还不支持select(),或者至少是我尝试使用该方法时收到的消息。我运行以下扩展PHPUnit_Extensions_Selenium2TestCase。 问题答案: 这是相对简单的。 这应
问题内容: 也许这是一个简单的问题,也许不是。我有一个选择框,在其中我用宽度进行硬编码。说120像素。 我希望能够显示第二个选项,以便用户可以看到文本的完整长度。 像其他一切一样。这在Firefox中可以正常工作,但不适用于Internet Explorer6。 问题答案: 如果您可以使用固定方式中预先存在的选项,而又不想通过编程方式更改宽度,那么除非有一点创意,否则可能会很不幸。 您可以尝试将属
问题内容: 我正在使用实质性的UI Select组件,并且试图在内部构建过滤器以仅显示与用户输入的内容匹配的项目。 我为正在开发的内容构建了一个最小的示例。 现在我的问题是,默认情况下,选择组件允许用户按下任何字母,并且如果存在第一个字母与用户输入匹配的选项,它将选择该选项。 所以,如果我有3个选项(,和)和用户类型选择部件将选择选项,我的文本字段不会改变的价值。但是,如果用户键入,则文本字段将更
问题内容: 我有一个选择元素,其中包含多个项目。我想更改其第一项的颜色,但似乎仅在单击选择下拉菜单时才会显示颜色。我想要的是在加载页面时更改颜色(例如灰色),以便用户可以看到第一个选项的颜色是不同的。 CSS: HTML: 问题答案: 那这个呢: