質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

2回答

4870閲覧

オブジェクト宣言の中で、配列にアクセスできない

hood

総合スコア351

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/01/16 12:01

###オブジェクト宣言の中で、配列にアクセスできない
目次通りです。
私はアプリのシステム的データの入った配列を定義し、どこからでも簡単にアクセスできるよう、オブジェクト宣言を利用しました。

しかし、以下のように、オブジェクト宣言の中で宣言した配列にアクセスしようとすると赤くなってしまいます。

kotlin

1object IDs { 2 var baseIds:Array<Int?> = arrayOf(5000) 3 //.... 4  baseIds[0]=R.drawable.mio_base_; 5 //.... 6}

これはなぜいけないのでしょうか?
一応、赤くなったところにカーソルを置くとExpecting member declarationと出るのですが「オブジェクトの中でメンバー宣言?」と腕を組んでしまいます。

どうか「オブジェクト宣言の中で、配列にデータを入れる方法」について、ご教授いただきたいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

R.drawable.mio_base_はAndroidのリソースIDだと思うので、int型の数値ですね。それならば、

kotlin

1object IDs { 2 val baseIds: IntArray = intArrayOf( 3 R.drawable.mio_base_, 4 R.drawable.xxx, 5 R.drawable.yyy, 6, 7, 89 ) 10}

のようにすればできませんか?利用するときは、IDs.baseIds[0]のようにすれば参照できると思います。

投稿2019/01/16 12:21

keicha_hrs

総合スコア6766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keicha_hrs

2019/01/16 12:26

書いてる間に終わってた。まあ先の回答で納得するならそれでもいいのだけど、リソースIDは不変のものだから、式で代入するのは無意味な気がするけど。
hood

2019/01/16 12:47 編集

回答ありがとうございます。 そのようなやりかたも考えたのですが、実際扱うデータは大量で、とびとびであり(以下に記すようなデータ)カンマで区切りるのが、大変かなと思いました。 placeIds[0]=R.string.place_tuugakuro; bgmIds[0]=R.raw.bgm_asa; bgIds[0]=R.drawable.bg_tuugaku; seIds[9]=1; baseIds[9]=R.drawable.mio_base_; meIds[9]=R.drawable.mio_me_oko; kuchiIds[9]=R.drawable.mio_kuchi_pan; baseIds[10]=R.drawable.mio_base_; meIds[10]=R.drawable.mio_me_oko; kuchiIds[10]=R.drawable.mio_kuchi_pan; って、このことも記しておくべきでしたね・・・反省します・・・
keicha_hrs

2019/01/16 13:03

Kotlinですよね?Javaではないですよね?末尾にセミコロンを入れるのも不要だと思うのですが。
hood

2019/01/17 01:46 編集

はい・・・それは私もそう思っていて、これはデータを入力するプログラムをSwingで作ったのですが、そのときはまだkotlinでアプリを作るのを想定してなかったのが原因です・・・ 早くセミコロンを外す仕様にしないといけないと思ってます・・・ご指摘ありがとうございました。
keicha_hrs

2019/01/17 03:29 編集

セミコロンがあってもエラーにはならないので、そういう事情があったのなら現状はそれでもいいと思います。こちらも過度な指摘で申し訳ありませんでした。ただ、「Kotlinらしくない」のは確かなので、外すことは検討された方がいいでしょうね。
hood

2019/01/17 11:13 編集

はい! 過度な指摘など、とんでもありません!むしろ細かいところまで見てくださり、感謝しかありません。 外すこと検討していきたいと思います!
guest

0

ベストアンサー

投稿2019/01/16 12:12

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hood

2019/01/16 12:19

回答ありがとうございます! 貼っていただいたサイト、参考にさせていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問