gpt4 book ai didi

java - Java 中 Rust 的 Option::iter 的等价物是什么?

转载 作者:行者123 更新时间:2023-11-29 08:24:05 25 4
gpt4 key购买 nike

我在 Rust 中有以下代码,我想将其翻译成 Java,因此我需要首先理解代码。

pub struct SimpleSelector {
pub tag_name: Option<String>,
pub id: Option<String>,
pub class: Vec<String>,
}

impl Selector {
pub fn specificity(&self) -> Specificity {
// http://www.w3.org/TR/selectors/#specificity
let Selector::Simple(ref simple) = *self;
let a = simple.id.iter().len();
let b = simple.class.len();
let c = simple.tag_name.iter().len();
(a, b, c)
}
}

我在这行代码中遇到问题:

let a = simple.id.iter().len();

最佳答案

如果Option<String>有一个值,那么它的迭代器将有一个要迭代的元素。

如果Option<String>没有值,那么它的迭代器将有 0 个元素要迭代。

换句话说 alet a = simple.id.iter().len();simple.id 中的元素数,如果有 id,则为 1;如果没有,则为 0。

(len 的实际计算发生在Item.size_hint 中,你可以看到它的来源here)。

如果是 Java,您可以使用 null , 如

public class SimpleSelector {
public String tag_name;
public String id;
public ArrayList<String> clazz;
}
// ...
int a = id == null ? 0 : 1;

Optional来自 Java 8,如

public class SimpleSelector {
public Optional<String> tag_name;
public Optional<String> id;
public ArrayList<String> clazz;
}
// ...
int a = id.empty() ? 0 : 1;

关于java - Java 中 Rust 的 Option::iter 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461750/

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