Spread演算子を使用してArray <Int>をvarargInt関数に渡すにはどうすればよいですか?

パンツ

複数Intのsを取るvararg関数があります私が持っているArray<Int>私は、入力として使用したいということ。

失敗した試み:

SpreadOperatorを使用して関数を呼び出す試みは次のとおりです。

fun printNumbers(vararg numbers: Int) {
    numbers.forEach { it -> println(it) }
}

val numbers: Array<Int> = arrayOf(1, 2, 3)
printNumbers(*numbers)

ただし、次のタイプの不一致エラーが発生します。

error: type mismatch: inferred type is Array<Int> but IntArray was expected
printNumbers(*arrayOf<Int>(1, 2, 3))
              ^

余分な混乱:

特に、でspread演算子を使用できるため、このエラーが発生する理由がわかりませんArray<String>例えば...

fun printStrings(vararg strings: String) {
    strings.forEach { it -> println(it) }
}

val strings: Array<String> = arrayOf("hello", "there", "stackoverflow")
printStrings(*strings)

出力:

hello
there
stackoverflow

エラーの修正を試みます:

  • 私はそれを変換することが可能であったかどうかを確認するためにオンラインで検索Array<Int>IntArray、これはコンパイラを満たす可能性があるとして、。逆の変換IntArrayからArray<Int>以外は何も見えませんでした

  • を呼び出すときにジェネリック型を指定してみましたarrayOf例えばarrayOf<Int>(1, 2, 3)これは(明らかな理由で)機能しませんでした。

ノート:

  • Kotlinバージョン1.0.3を使用しています

  • 私の混乱の一部は、Array<Int>の違いIntArray、どちらを選択するかを理解していないという事実に起因していると思います


Array<Int>複数Intを期待するvararg関数にを渡すにはどうすればよいですか?

zsmb13

基本的に、Array<Int>は内部のボックス化されたIntegerオブジェクトIntArrayの配列ですが、プリミティブint値の配列に変換されます(この回答を参照)。

Array<Int>vararg関数に渡すにはtoIntArray()関数を使用してIntArray最初の関数に変換します。

val numbers: Array<Int> = arrayOf(1, 2, 3)
printNumbers(*numbers.toIntArray())

または、可能であれば、IntArray最初に配列を作成します。これにより、プロセスでの余分な配列の割り当てや、個々の値のボックス化を回避できます。

val numbers: IntArray = intArrayOf(1, 2, 3)
printNumbers(*numbers)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

long intをitoa関数に渡すにはどうすればよいですか?

分類Dev

関数内のintのポインターを別の関数に渡し、そこでも操作するにはどうすればよいですか?

分類Dev

SQLiteのwhere句の引数としてintを渡すにはどうすればよいですか?

分類Dev

vectorとint *を渡すことができる関数を実装するにはどうすればよいですか?

分類Dev

関数の戻り値をintに変更するにはどうすればよいですか?

分類Dev

文字列をint()に渡す前に、文字列が負の数であるかどうかを確認するにはどうすればよいですか?

分類Dev

Linqtosqlで汎用のGetById(int Id)関数を生成するにはどうすればよいですか?

分類Dev

Linqtosqlで汎用のGetById(int Id)関数を生成するにはどうすればよいですか?

分類Dev

FormUrlEncodedContentを介してList <int>を渡すにはどうすればよいですか

分類Dev

intをint **に追加するにはどうすればよいですか?

分類Dev

Javaを使用して16進数のintをマスクするにはどうすればよいですか?

分類Dev

SharedPreferencesを使用してint変数を保存するにはどうすればよいですか?

分類Dev

Pythonで別のint()関数を作成して、理解できるようにするにはどうすればよいですか?

分類Dev

プリミティブintをAsyncTaskに渡すにはどうすればよいですか?

分類Dev

変化するint値を使用してArduinoでさまざまな関数を呼び出すにはどうすればよいですか?

分類Dev

string(int、char)関数を使用して宣言された文字列の値を追加または変更するにはどうすればよいですか?

分類Dev

int [] numArrayに関連するこのエラーを修正するにはどうすればよいですか?

分類Dev

Javaでfloat変数をint変数に追加するにはどうすればよいですか?

分類Dev

QFlagsの演算子Int()をどのように使用しますか?

分類Dev

C ++のコマンドライン引数を介して定数intを渡すにはどうすればよいですか?

分類Dev

この関数にgetlineで文字列を読み取らせ、intでも同じように動作させるにはどうすればよいですか?

分類Dev

intパラメーターを使用してテンプレート関数を反復処理するにはどうすればよいですか?

分類Dev

関数のvoidポインターパラメーターを介してint値を渡し、それをint値に戻すにはどうすればよいですか?

分類Dev

C ++以上でintを文字列に変更するにはどうすればよいですか?それを変換する関数を作成するにはどうすればよいですか?

分類Dev

正規表現を使用して文字列の比較演算子の後に値を抽出し、値がpythonでobject / strまたはint / floatであるかどうかを確認するにはどうすればよいですか?

分類Dev

CharをIntに変換するにはどうすればよいですか?

分類Dev

ブールをintにするにはどうすればよいですか?

分類Dev

StringをIntに変換するにはどうすればよいですか?

分類Dev

StringをIntに変換するにはどうすればよいですか?

Related 関連記事

  1. 1

    long intをitoa関数に渡すにはどうすればよいですか?

  2. 2

    関数内のintのポインターを別の関数に渡し、そこでも操作するにはどうすればよいですか?

  3. 3

    SQLiteのwhere句の引数としてintを渡すにはどうすればよいですか?

  4. 4

    vectorとint *を渡すことができる関数を実装するにはどうすればよいですか?

  5. 5

    関数の戻り値をintに変更するにはどうすればよいですか?

  6. 6

    文字列をint()に渡す前に、文字列が負の数であるかどうかを確認するにはどうすればよいですか?

  7. 7

    Linqtosqlで汎用のGetById(int Id)関数を生成するにはどうすればよいですか?

  8. 8

    Linqtosqlで汎用のGetById(int Id)関数を生成するにはどうすればよいですか?

  9. 9

    FormUrlEncodedContentを介してList <int>を渡すにはどうすればよいですか

  10. 10

    intをint **に追加するにはどうすればよいですか?

  11. 11

    Javaを使用して16進数のintをマスクするにはどうすればよいですか?

  12. 12

    SharedPreferencesを使用してint変数を保存するにはどうすればよいですか?

  13. 13

    Pythonで別のint()関数を作成して、理解できるようにするにはどうすればよいですか?

  14. 14

    プリミティブintをAsyncTaskに渡すにはどうすればよいですか?

  15. 15

    変化するint値を使用してArduinoでさまざまな関数を呼び出すにはどうすればよいですか?

  16. 16

    string(int、char)関数を使用して宣言された文字列の値を追加または変更するにはどうすればよいですか?

  17. 17

    int [] numArrayに関連するこのエラーを修正するにはどうすればよいですか?

  18. 18

    Javaでfloat変数をint変数に追加するにはどうすればよいですか?

  19. 19

    QFlagsの演算子Int()をどのように使用しますか?

  20. 20

    C ++のコマンドライン引数を介して定数intを渡すにはどうすればよいですか?

  21. 21

    この関数にgetlineで文字列を読み取らせ、intでも同じように動作させるにはどうすればよいですか?

  22. 22

    intパラメーターを使用してテンプレート関数を反復処理するにはどうすればよいですか?

  23. 23

    関数のvoidポインターパラメーターを介してint値を渡し、それをint値に戻すにはどうすればよいですか?

  24. 24

    C ++以上でintを文字列に変更するにはどうすればよいですか?それを変換する関数を作成するにはどうすればよいですか?

  25. 25

    正規表現を使用して文字列の比較演算子の後に値を抽出し、値がpythonでobject / strまたはint / floatであるかどうかを確認するにはどうすればよいですか?

  26. 26

    CharをIntに変換するにはどうすればよいですか?

  27. 27

    ブールをintにするにはどうすればよいですか?

  28. 28

    StringをIntに変換するにはどうすればよいですか?

  29. 29

    StringをIntに変換するにはどうすればよいですか?

ホットタグ

アーカイブ