19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HameeAdvent Calendar 2015

Day 16

PHPer向けのSwift入門<配列操作編>

Last updated at Posted at 2015-12-15

#はじめに
これはHamee Advent Calendar 2015の16日目の記事です。

この記事では、PHPがある程度触れている人向けに、Swiftではこんな感じで書きますよというのをざっくりとまとめてあります。
今回は、配列操作に絞ってお送りしたいと思います。

##配列の要素数を取得する

PHP

$array = [0,1,2,3];
count($array); // -> 4

####Swift

var array = [0,1,2,3]
var arrayCount = array.count // -> 4

##配列の末尾に新しい要素を追加する

PHP

$array = [0,1,2,3]
array_push($array,4) // -> [0,1,2,3,4]

Swift

var array = [0,1,2,3]
array.append(4) // -> [0,1,2,3,4]

##配列のすべての要素を削除する
####PHP

$array = [0,1,2,3];
array_splice($array,0,count($array));
print_r($array); // ->[]

####Swift

var array = [0,1,2,3]
array.reomoveAll // -> []

##配列の先頭の要素を削除する
####PHP

$array = [0,1,2,3]
array_shift($array) // ->  [1,2,3]

####Swift

var array = [0,1,2,3]
array.removeFirst() // -> [1,2,3]

##配列の末尾の要素を削除する
####PHP

$array = [0,1,2,3]
$num = array_pop($array)
print_r($array) // -> [0,1,2]

####Swift

var array = [0,1,2,3]
array.removeLast() // -> [0,1,2]

##指定した配列の要素を削除する
####PHP

$array = [0,1,2,3];
unset($array[2]);
print_r(array_values($array)); // -> [0,1,3]

####Swift
ArrayクラスのremoveAtIndexメソッドを使う。
removeAtIndexメソッドで削除位置を指定する。

var array = [0,1,2,3]
array.removeAtIndex(2) // -> [0,1,3]

##配列の先頭に要素を加える
####PHP

$array = [0,1,2,3];
$val = 100;
array_unshift($array,$val);
print_r($array); // -> [100,0,1,2,3];

####Swift
配列の先頭に要素を追加する場合はArrayクラスのinsertメソッドを使う。

var array = [0,1,2,3]
array.insert(100, atIndex : 0) // -> [100,0,1,2,3]

##範囲を指定して要素を削除する
####PHP

$array = ["mars","moon","earth","venus"];
array_splice($array,1,1);
print_r($array); // -> ["mars","earth","venus"]

####Swift
配列から範囲を指定して複数の要素を削除するには、removeRangeメソッドを使う。
引数には範囲を表すRangeオブジェクトを使用し指定する。

var array = ["mars","moon","earth","venus"]
array.removeRange(Range<Int>(start: array.startIndex + 1, end: array.startIndex + 2)) // -> ["mars","earth","venus"]

##配列から要素を指定して削除する
####PHP

$array = ["mars","moon","earth","venus"];
$cnt = array_search("earth",$array);
array_splice($array,$cnt,1);
print_r($array); // -> ["mars","moon","venus"]

####Swift
removeAtIndexメソッドとindexOfメソッドを使うパターン

var array = ["mars","moon","earth","venus"]
array.removeAtIndex(array.indexOf("earth")!) // -> ["mars","moon","venus"]

filterメソッドを使うパターン
指定した要素以外の配列を作る

var array = ["mars","moon","earth","venus"]
var filterArray = array.filter({$0 != "earth"}) // -> ["mars","moon","venus"]

##配列の要素のインデックスを取得する
####PHP

$array = ["mars","moon","earth","venus"];
$index = array_search("earth",$array);
print_r($index); // -> 2

####Swift
indexOfメソッドは要素を指定して、見つかった要素のインデックスを返す。

var array = ["mars","moon","earth","venus"]
var index = array.indexOf("earth") // -> 2

##配列の順序をソートする
####PHP

//昇順
$array = [3,4,5,7,1,9];
sort($array,SORT_NUMERIC);
print_r($array); // -> [1,3,4,5,7,9]
//降順
$array = [3,4,5,7,1,9];
rsort($array,SORT_NUMERIC);
print_r($array); // -> [9,7,5,4,3,1]

####Swift
sort関数にクロージャを渡すことによって、数値などを昇順や降順にソートできる。
クロージャの記述は$0,$1のように引数名を省略する方法と「i1 : Int」のように引数名を記述する方法がある。

var array = [3,4,5,7,1,9]
//昇順 引数名を記述する場合
var ascendingOrderArray = array.sort {(i1 : Int, i2 : Int) -> Bool in
 return i1 < i2
} // -> [1,3,4,5,7,9]
/*
昇順 引数名を省略する場合
var ascendingOrderArray = array.sort({$0 < $1})  -> [1,3,4,5,7,9]
*/

//降順 引数名を記述する場合
var descendingOrderArray = array.sort {(i1 : Int, i2 : Int) -> Bool in
 return i1 > i2
} // -> [9,7,5,4,3,1]
/*
降順 引数名を省略する場合
var descendingOrderArray = array.sort({$0 > $1}) -> [9,7,5,4,3,1]
*/

##配列の順序を反転する
####PHP

$array = ["mars","moon","earth"];
$reversed = array_reverse($array);
print_r($reversed); // -> ["earth","moon","mars"]

####Swift
reverseメソッドを使う。

var array = ["mars","moon","earth"]
var reversedArray = array.reverse() // -> ["earth","moon","mars"]

##配列をフィルタリングする
####PHP

function even($num)
{
    return($num % 2 == 0);
}
$array = [0,1,2,3,4,5,6,7,8,9,10];
print_r(array_filter($array, "even")); // -> [0,2,4,6,8,10]

####Swift
filterメソッドを使う。

var array = [0,1,2,3,4,5,6,7,8,9,10]
//偶数のみを取り出す
var evenArray = array.filter{(num : Int) -> Bool in
 return num % 2 == 0
} // -> [0,2,4,6,8,10]
/*
クロージャを省略すると
var evenArray = array.filter({num in num % 2 == 0}) // -> [0,2,4,6,8,10]
*/

#おわりに
ざっくりとまとめましたが、PHPと比較するとSwiftではこんな感じで書くんだな程度で参考にして頂いて、少しでもSwiftに興味をもってもらえたら嬉しいです:smiley:
次回は文字列操作編を投稿しようと考えています。お楽しみに!

19
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?