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

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

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

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

5回答

1351閲覧

これを短く書けますか?

KTH

総合スコア86

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/02/25 04:00

nas.remove(at: 1)
nas.remove(at: 2)
nas.remove(at: 3)
nas.remove(at: 4)
nas.remove(at: 5)
nas.remove(at: 6)
nas.remove(at: 7)
nas.remove(at: 8)
nas.remove(at: 9)

これを短く書きたいのですが、どうやって書けば短く書けますか?

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

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

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

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

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

fuzzball

2019/02/25 04:20

例えば var nas = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] に対してこれを実行した場合、どういう結果を期待していますか?
fuzzball

2019/02/25 04:25

要素数が10未満のときはどうしますか?
KTH

2019/02/25 10:46

要素の数は毎日変わる前提なので、.countのカウントを使って数えるようにしています 実はこれはもともとはアメリカの株式市場であるNASDAQの公式サイトの52週高値リスト(過去1年間中で今日が1番高値をつけた株のリスト)のリンクのリストから株式のティッカーシンボル(株価の電話番号みたいなもの)を抜き出して、いつも使っているニュースサイトの株価チャートのページのURLに貼り付けて株価チャートを表示させようとしていたものです
fuzzball

2019/02/25 10:52

なぜ私の質問と関係ないことを長々と書くのでしょうか?
KTH

2019/02/25 10:55

ですね、すいません
fuzzball

2019/02/27 01:17

結局何をしたかったのでしょう? [1]〜[9]の要素を削除したかったのでしょうか? それとも、全ての要素を削除したかったのでしょうか?
guest

回答5

0

ベストアンサー

何がしたいのかよくわかりませんが
BluOxyさんの様に、

Swift

1for i in 1...9 { 2 nas.remove(at: 1) 3}

でも可能ですがすべての要素を消す関数も存在します。
removeAll()

公式リファレンスにも書かれていますよ。

投稿2019/02/25 04:53

編集2019/02/25 07:58
stdio

総合スコア3307

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

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

TakeOne

2019/02/25 05:10 編集

これだと実行時にIndex out of rangeのエラーになります。BluOxyさんも訂正された通り `nas.remove(at: 1)`とする必要があります。
stdio

2019/02/25 05:59

ああ確かに... ならfor文を9から1に動くようにしましょう。それなら問題ないはずだ。
fuzzball

2019/02/25 08:03

ちなみに (1...9).reversed() で逆順になります。
TakeOne

2019/02/25 09:08 編集

すみません。takabosoftさんの回答を見て気がつきました。もともとの配列の要素数が18個以上ある場合は、訂正前の回答でもエラーにはならないですね。詳しくはtakabosoftさんの回答へのコメントを参照してください。
stdio

2019/02/26 01:06

そうですね^^ そういえばこの質問は定義があいまいでした。 私もあまり深く考えずに投稿したことは反省しましょう。 というよりデバックしていると「Index out of range」なんて気が付くと思いますが... 付かないのかね... 不思議...
guest

0

Swiftを書いたことがないため大変恐縮ですが、プログラミング全般の一般的な考えでは繰り返し文を使います。
具体的にはfor文やwhile文を使います。使い方はリファレンス情報が噛み砕かれている日本語記事を見られると良いでしょう。

Swift

1for i in 1...9 { 2 nas.remove(at: 1) 3}

投稿2019/02/25 04:15

編集2019/02/25 04:30
BluOxy

総合スコア2663

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

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

fuzzball

2019/02/25 04:20

nas.remove(at: 1) じゃなくて?
BluOxy

2019/02/25 04:28 編集

間違っていました。ご指摘ありがとうございます。 修正します。
guest

0

えーーーと。
すでにベストアンサー出ちゃってますけど、Swift的にはこうですよ

swift

1nas.removeSubrange(1...9)

投稿2019/02/25 06:06

MasakiHori

総合スコア3384

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

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

0

質問に素直に答えるとこうかな。
(1...9).forEach { nas.remove(at: $0) }

「Index out of range」などの話も出ていますが、nasが10個のデータという前提条件は無いですよね。

投稿2019/02/25 05:51

takabosoft

総合スコア8356

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

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

TakeOne

2019/02/25 09:15 編集

なるほど。質問の意図は配列の1個目から9個目までの要素を削除したいということのように読み取ったのですが、質問に書かれている通りの順番でコードを実行する別の方法を聞いているのだったら、そもそも配列要素の1個目から9個目までを削除する処理になっていないので、実はこのtakabosoftさんの回答や、stdioさんやBluOxyさんの訂正前の回答の方が、質問通りの処理をするコードになりますね。もともとの配列の要素数が18個以上あるなら、9個削除した後の9個先の要素を削除できるのでIndex out of rangeエラーにもならないですね。たぶん質問に書かれているコードがもともとの意図通りでないコードなのだろうとは思いますけど。
guest

0

Swift

1func toRemoveIndexNumberOf(_ indexNumber:Int){ 2 for _ in 0...indexNumber - 1 { 3 nas.remove(at: 0) 4 } 5} 6

思いつかなければ作ればいいと思います!
毎回インデックスの0から9まで消すということでないようなら
このようにFuncで関数を作るのも手かなと思います。

投稿2019/02/25 05:27

reiji_nikol

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問