1. ホーム
  2. arrays

[解決済み] 引数として渡された配列のサイズ取得

2022-03-03 13:38:52

質問

どうしてもうまくいきません。len' doesn't exist on type '&[String]' というエラーが何度も出てしまいます。

fn testLength(arr: &[String]) {
    if arr.len >= 10 {
        // Do stuff
    }
}

私はまだRustにかなり慣れていないのですが、これはどこかの生の文字列へのポインタであることは理解しています。なぜ実行時にその文字列の長さを取得できないのでしょうか?このような場合、"Length of string in rust"" や "Length of array in rust"" などでググってみても、全くヒットしないのです。

どうすればいいですか?

もちろん、あなたはそれを行うことができます - それはちょうどです。 len はフィールドではなく、メソッドです。

fn test_length(arr: &[String]){
    if arr.len() >= 10 {
        // Do stuff
    }
}

Rust の学習を始めたばかりの人は、まず最初に オフィシャルブック - また、なぜ &[str] は意味をなさない(要するに。 str はサイズのない型なので、配列を作ることはできませんが、代わりに &str は借用文字列に使用されるべきで String は所有する文字列です。 Vec<String> をどこかで簡単に手に入れることができます。 &[String] を出す)。

また、関数に文字列を渡したいのか、文字列の配列を渡したいのかが明確でないことも付け加えておきます。もし文字列なら、次のように書きます。

fn test_length(arr: &str) {
    if arr.len() >= 10 {
        // Do stuff
    }
}

len() しかし、文字列の場合、長さをバイト数で返すので、必要な長さではない場合があります (バイト数 != "characters" の定義に関わらず、一般的に文字列は Rust では UTF-8 であり、UTF-8 は可変幅エンコーディングなので、quot; character" で長さ)。

なお、私は testLength から test_length なぜなら、snake_caseはRustのプログラムで受け入れられている規則だからです。