FC2ブログ

Swiftを学ぶ(1)

「Swift離陸ガイド」をテキストに、Swiftをざっと眺めてみることにします。

他の言語の経験があれば、変数や定数、基本演算子、高度な演算子や制御フローといったものはそれほど習得が難しいものではありません。なので、ここでは触れず、いきなり「関数」から始めることにします。

●関数の定義と呼び出し
func greet(name: String, day: String) -> String {
 return "Hello \(name), today is \(day)"
}
var str = greet("Bob", "Sunday")

関数はキーワードfuncで始め、関数名、引数、戻り値と続きます。戻り値の型は->の後に書きます。引数は、引数名: 引数の型の順に書きます。引数が複数ある場合には、カンマ(,)で区切ります。関数の呼び出し方については、C言語とほぼ同じです。

●引数なしの関数
func sayHelloWorld() -> String
{
 return "Hello, world"
}
var str: String = sayHelloWorld()

引数がない関数の場合には括弧だけを書きます。この関数を呼び出す場合も同様です。

●値を返さない関数
func sayGoodbye(personName: String)
{
 println("Goodby, \(personName)")
}
sayGoodbye("Dave")

値を返さない関数の場合、「 -> 型」は不要です。厳密に言うと、値を返さない関数は要素数が0のタプルを返します。

●複数の値を返す関数
func getGasPrices() -> (Double, Double, Double)
{
 return (3.59, 3.69, 3.79)
}
let (typeA, typeB, typeC) = getGasPrices()

Swiftではタプルを使って複数の値を返すことができます。タプルとは、複数の構成要素からなる組を総称する一般概念です。

●Optional Tupleを返す関数
func minMax(array: [Int]) -> (min: Int,max: Int)? {
 if array.isEmpty { return nil }
 var currentMin = array[0]
 var currentMax = array[0]
 for value in array[1 ..< array.count] {
  if value < currentMin {
   currentMin = value
  }
  else if value > currentMax {
   currentMax = value
  }
 }
 return (currentMin, currentMax)
}
if let bounds = minMax([8, -6, 2, 109, 3, 71]) {
 println("最小は\(bounds.min)、最大は\(bounds.max)")
}

関数値がオプショナルな場合は、Optional Bindingを利用します。Optional Bindingとは、ifやwhile文の条件式で宣言され、Optional型の変数を代入された変数は非optional型になることを指します。

●引数の名前
func somtFunction(externalParameterName localParameterName: Int) {

}

Swiftでは引数に説明を付けることができます(externalParameterName)。これを外部引数名と言います。localParameterNameは変数名です。外部引数名と変数名はスペースで区切ります。外部引数名を付けた場合、関数を呼び出す際には必ず外部引数名を記述しなくてはいけません。

●外部引数名の簡略記述
func join(string s1: String, toString s2: String, withJoiner joiner: String) -> String {
 return s1 + s2
}

この関数で、外部引数名と変数名を同じにする場合には、同じ綴りを2回記述する必要はありません。「#」を付けて省略することができます。

func join(#string: String, #toString: String, #withJoiner: String) -> String {
 return string + withJoiner + toString
}

今回はここまでとします。
関連記事
プロフィール

core_dump

Author:core_dump

「AyajinSoft」の[Ayajin」ですが、今は昔、某所に派遣されていた時に、「怪しい人=怪人」と呼ばれたことがあり(オシロスコープなど、他の人が持っていないようなものを持っていただけなんですけどね)、なぜかこの音が気に入ってしまい、以来、この表記を使っています。

基本的に組み込み技術者です。一時期、iOSアプリの開発に従事していましたが、今後は制御系を中心にやっていこうと思っていますが、なにぶん相手のある話なので、組み込みや制御を中心に、アプリ寄りなところまで含めて幅広くやって行こうと思っています。

技術者なのですが、最近、いろいろなことに興味や面白さを感じるようになりました(ソフトウエア工学だけでなく、自然科学、人文科学、社会科学などなど)。それが高じて、現在、大学で哲学を中心に勉強しています。

最新記事
最新コメント
月別アーカイブ
カテゴリ
アクセスカウンタ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR