はじめに
しばらく Android やっていましたが、最近 Swift 始めました。Java との比較をつらつらと書きますので、参考になれば幸いです。
個人用のメモであり、網羅的に書いているわけではありませんのでご了承ください。誤り等あればご指摘いただけると嬉しいです。
用語、キーワード
だいたいこんな感じの対比でしょうか。
Swift | Java |
---|---|
プロパティ | フィールド |
プロトコル | インタフェース |
type | static |
self | this |
nil | null |
型宣言
Java
final String message1 = "Hello";
String message2 = "Hello";
String message3;
Swift
let message1 = "Hello"
var message2 = "Hello" // var message2 : String = "Hello" でもOK
var message3 : String // 宣言時に初期化しない場合は型を指定する
for
Java
int[] numbers = {100, 200, 300};
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
または
int[] numbers = {100, 200, 300};
int sum = 0;
for (int number : numbers) {
sum += number;
}
Swift
var numbers = [100, 200, 300]
var sum = 0
for var i = 0; i < numbers.count; i++ {
sum += numbers[i]
}
または
var numbers = [100, 200, 300]
var sum = 0
for i in 0..<numbers.count {
sum += numbers[i]
}
または
var numbers = [100, 200, 300]
var sum = 0
for number in numbers {
sum += number
}
Switch
Java
Swift は Java でいう break は不要。ただし、何もしない場合は break が必要。
switch (num) {
case 0:
message = "case 0";
break;
case 1:
case 2:
case 3:
message = "case 1 or 2 or 3";
break;
default:
break;
}
Swift
switch num {
case 0:
message = "case 0"
case 1, 2, 3:
message = "case 1 or 2 or 3"
default:
break
}
または
switch num {
case 0:
message = "case 0"
case 1...3:
message = "case 1 or 2 or 3"
default:
break
}
配列
Java の ArrayList 相当の内容です(可変でない配列は let を指定する)。Java の対比コードは割愛します。
Swift
var animals = [String]()
animals += ["犬"] // 要素の追加 ["犬"]
animals += ["猫", "馬"] // 要素の追加 ["犬", "猫", "馬"]
animals.append("牛") // 要素の追加 ["犬", "猫", "馬", "牛"]
animals.removeAtIndex(0) // 指定箇所の要素の削除 ["猫", "馬", "牛"]
animals.insert("犬", atIndex: 0) // 位置を指定して要素を追加 ["犬", "猫", "馬", "牛"]
animals[1...2] = ["馬", "猫"] // 複数の要素を変更 ["犬", "馬", "猫", "牛"]
連想配列
Java
HashMap<String,String> fruits = new HashMap<String,String>();
fruits.put("apple", "りんご");
...
String fruit = fruits.get("apple");
Swift
var fruits: Dictionary<String, String>
fruits["apple"] = "りんご"
...
var fruit = fruits["apple"]
ダウンキャスト
Java
Object object = "message";
String message = (String) object;
Swift
var object : Any = "message"
var message = object as String
メソッド
注)swift は var キーワードがない場合 let として扱うため、引数に変更を加える場合は var キーワードをつける
Java
int countUp(int number) {
return number + 1;
}
Swift
func countUp(number : Int) -> Int {
return number + 1
}
継承
Java
class Dog extends Animal {
}
Swift
class Dog: Animal {
}