Swift(スウィフト)とは、「迅速な」「即座の」を意味する英単語である。
Appleが次世代のアプリケーション開発用言語として設計した。Objective-Cの後継を目指しており、最新トレンドの採用といかにもApple的な独自路線の融合が特徴。2014年6月2日に行われたWorldwide Developers Conference 2014で発表された。
Appleは Swift = Objective-C - C としており、ベース文法がC言語系列から離れたものとなっている。感覚的にはRustやGoogle GOといった2000年台後半設計言語の系統に属する。
主なフィーチャーは以下のとおり
Swiftで開発されたアプリケーションを動作させるにはiOS 7以降、またはOS X 10.9以降が必要となる。
2016年9月13日バージョン3.0がリリースされた。C言語時代から継続するforループの書式が廃止されるなど互換性を損なう変更も行われた。
println(“Hello World”)
コンパイル型言語で伝統的なメイン関数はなく、トップレベルで書き下すとスクリプト言語のようにそのまま実行される。複数のモジュールでプログラムを書く場合は、main.swiftに書かれたものがエントリーとなる。
基本的にはD言語辺りに近い静的OOPクラスとして動作する。virtualなし、final, overrideありのイマドキ設計。ただし、
等の条件を満たす場合はobjc互換となり、メッセージパッシングで動くようになる。objcとのメソッド名ブリッジ等はややこしいので省略。基本的にコンパチなクラスは相互呼び出しが可能である。
Swiftの非常に特徴的な要素の一つが関数の引数周りの設計である。C言語的な引数の値のみを渡す文法と、Objective-C的なメッセージ引数的な文法が混在し、状況によってデフォルトの扱いが違うという癖のある作りになっている。
基本ルール
func f(v1: Int, v2: Int) -> Int
{
return f1 + f2
}
// -> 外部パラメータ名なしで呼び出す f(1,2)
(B) Objective-Cスタイル
func f(left v1: Int, right v2: Int) -> Int
{
return v1 + v2
}
// -> 外部パラメータ名付きで呼び出す f(left: 1, right: 2)
(B’) Bの略記形
func f(#left: Int, #right: Int) -> Int
{
return left + right
}
※混在も可能
func f(v1: Int, #plus: Int) -> Int
{
return v1 + plus
}
// f(1, plus: 2)
ややこしいのはデフォルトの扱い。
なんでこんな事になるかというと、オブジェクトに属するメソッドはメソッド名自体が先頭引数の意味を説明することが多いのでわざわざ書かないようにしたい、しかしイニシャライザは名前がinit(呼び出す方はClass()のようにコンストラクタ呼び出し)で統一されているので先頭も必要・・・という理由による。ちなみにイニシャライザは外部パラメータ名によってオーバーロードされるので、同じ型シグネチャに対して複数の異なるイニシャライザを定義することも可能である。
なお場合によっては外部パラメータ名を付けたい場合と付けたくない場合があると思うが、そういう時は、(B)の記法を使って強制的に外部パラメータ名を付けたり、外部パラメータ名をアンダースコアにすることで省略扱いすることもできる。まさにApple。
細かいことはApple様がiBooksで配布しているマニュアルを読もう。
また、iBooksだけではなくwebでもドキュメントは公開されている。
Apache 2.0ライセンスでソースコードやubuntu用コンパイラなどが公開されている。swift.org
掲示板
急上昇ワード改
最終更新:2024/12/28(土) 11:00
最終更新:2024/12/28(土) 11:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。