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

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

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

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

Q&A

解決済

2回答

1860閲覧

メソッドの引数に応じて、appendする配列を変更したい

bbbb

総合スコア26

Swift

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

0グッド

0クリップ

投稿2016/11/03 07:26

下記のようなコードを書いています。

var hoge:NSArray = [] var fuga:NSArray = [] func append(type: String) { var todo = "test" if type == "hoge" { self.hoge.append(todo) } else if type == "fuga" { self.fuga.append(todo) } else { return false } }

変更したいこととしてはif文で条件分岐をしてappendする配列を変更するのではなく、
self.引数.append(todo)
のように直接引数に対してappendをするというようなことがやりたいです。

そもそもそのやり方はよくないなどの意見はあるかもしれませんが
ひとまず上記の方法ができるのかを教えていただけないでしょうか。

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

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

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

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

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

guest

回答2

0

質問の意味が分からないのですが、こういうことではないのでしょうか?

swift

1var hoge: [String] = [] 2var fuga: [String] = [] 3 4self.hoge.append("hogehoge") 5self.fuga.append("fugafuga") 6print(hoge, fuga) 7//=> ["hogehoge"] ["fugafuga"]

やりなおし

swift

1var hoge: NSArray = ["1"] 2var fuga: NSArray = ["A"] 3 4func append(type: String, todo:String) { 5 mutableArrayValueForKey(type).addObject(todo) 6}

として、

swift

1append("hoge", todo: "hogehoge") 2print(hoge) 3//=> ( 4//=> 1, 5//=> hogehoge 6//=> ) 7 8append("fuga", todo: "fugafuga") 9print(fuga) 10//=> ( 11//=> A, 12//=> fugafuga 13//=> )

Swift2で検証。

投稿2016/11/04 00:59

編集2016/11/04 06:08
fuzzball

総合スコア16731

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

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

fromageblanc

2016/11/04 05:25

質問の意図はおそらく、jsのeval、phpの$$みたいに文字列を変数名にしたいのかと。
fuzzball

2016/11/04 05:50

ありがとうございます。どっちも知りませんが、「文字列を変数名に」で(たぶん)分かりました。
fuzzball

2016/11/04 06:09

やり直しました。
guest

0

ベストアンサー

以下の様にするとやりたい事ができると思います。

swift

1var hoge: NSMutableArray = [] 2var fuga: NSMutableArray = [] 3 4func append(type: String, array: NSMutableArray) -> Bool { 5 let todo = "test" 6 7 if type == "hoge" { 8 array.add(todo) 9 return true 10 } else if type == "fuga" { 11 array.add(todo) 12 return true 13 } else { 14 return false 15 } 16} 17 18override func viewDidLoad() { 19 super.viewDidLoad() 20 21 let b1 = append(type: "hoge", array: self.hoge) 22 //=> true 23 24 let b2 = append(type: "fuga", array: self.fuga) 25 //=> true 26 27 let b3 = append(type: "piyo", array: self.fuga) 28 //=> false 29}

投稿2016/11/03 13:29

編集2016/11/04 01:14
_Kentarou

総合スコア8490

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

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

退会済みユーザー

退会済みユーザー

2016/11/04 00:32

`NSMutableArray`はReference typeなので`inout`をつける必要はないですよ。書かれたコードは`inout`があってもなくても同じ挙動になります。
_Kentarou

2016/11/04 01:12

> k_katsumiさん ご指摘有難うございます、inout なしに修正します。
bbbb

2016/11/04 13:23

ありがとうございます。 意図していた挙動になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問