いっきに基本構文(1):キホンのキ
ブログ始めて二週間?経ちました。
最近のブログはアクセス解析も標準装備なんですね、便利です。
とりあえず、はてな内の新規開設したブログ一覧とかからが多いですが、
びっくりしたのは適当に選ばせてもらったブログテーマからのアクセスが多いですね。
なるほど、こういうアクセス数稼ぎもあるのか。
Webは専門外なんで勉強になります。
さて、前回までは妄想記事、ここから始めて技術的な記事書きます。
気を付けて書きますが、如何せんコピペSEなので間違いや語弊を多く含んじゃうと思います。
注意してもらえたら嬉しいです。
SwiftはObjective-Cに比べ、JavaやPythonに近いオブジェクト指向らしい形態となっているらしいです。
とはいえ、構文の微妙な違いは付き物で
どうだっけなと毎回ググる日々からおさらばすべく、一気に基本構文まとめようと思います。
前提
一行の終わり
セミコロン付けてもいいし、付けなくてもいいです。
多分、Apple的には無くす方向でやりたいけど、
昔ながらの人はセミコロン無いと蕁麻疹出るみたいで、
そういう人の為にセミコロン付けれる仕様にしたと邪推してます。
せっかく省いてくれたんで、僕は基本的に付けません。
var nonSemicolon = "セミコロン無し" var semicolon = "セミコロン有り";
標準出力
print()です。シンプル。
print("Hello world")
Swift2より前はprintlnで改行コメントでしたが
Swift2からはprintのデフォルトが改行付きになってprintlnは廃止らしいです。
テストソースとか真っ赤なったんだろうな・・・
改行無しで出力したい時はterminator(改行コード)の指定をブランクにすればいいらしいです。
print("Hello world1 ", terminator:"" ) print("Hello world2")
実行結果 |
---|
Hello world1 Hello world2 |
変数定義
変数
varを付けます。
var variable = "変数だよ"
定数
letを付けます。ありのまま(?)です。
let constant = "定数だよ"
letは略語じゃなく、そのままの英単語で、数学なんかで
仮にXを100とする、みたいな時に使われる単語らしいです。
constの方が分かりやすかったな・・・
複数定義
かっこで括ります。そんな使わないかな。
var (num1,num2) = (1,2)
初期値について
2016/6/14追記
初期値については、定義してもしなくても良いみたいです。
定義しない場合はnil(JavaでいうNull)が入ります。
ただし、使えません。
var str: String str = "" // ちゃんと値を入れてあげても if str == nil { // ここでコンパイルエラー print("OK") }
Javaは初期値が設定されてないとワーニングが出てた気がします。若干使い勝手が異なりますね。
そういう場合はOptionalを使います。
Optional値について
初期値を設定したくない場合、値がnilかもしれないというのを明記しないといけません。
var 変数名: 型?
この?がオプショナルであるという定義になります。
中身は空かな?の「?」です。
var str:String? if str == nil { print("OK") }
実行結果 |
---|
OK |
値が確実に入ってると明記したい場合は ! を付けます。
中身入ってるよ!の「!」です。
var str:String? str = "" if str! == "" { print("OK") }
実行結果 |
---|
OK |
ちなみに値入ってないのに入ってるなんて嘘つくと
実行時エラーという恐ろしい結果が待っているのでご注意をば。
文字列の埋め込み
\(変数)です。文字列に埋め込む場合は""の中に書きます。
これJavaラーとしては地味に抵抗あります。繋げたきゃプラスでええやん。。
print("num1:\(num1)")
実行結果 |
---|
num1:1 |
型宣言
暗黙変換が使えます。基本型なら定義しなくて良いらしい。
ここまでの例文も使ってないです。
ちゃんと定義したければ
var 変数名: 型 = 値
らしいです。これもJavaラーとしては抵抗ある。。
var variable: String = "文字列です!"
ちなみにコロン前後、イコールの前後もですがスペースはあってもなくても良い感じにしてくれます。
Swiftの基本的な型の名前は以下の通り。
種類 | 名前 |
---|---|
文字列 | String |
文字 | Character |
バイト | byte |
真偽値 | Bool |
整数 | Int・Int8・Int16・Int32・Int64 |
符号無し整数 | UInt・UInt8・UInt16・UInt32・UInt64 |
浮動小数点あり | Double・Float・Float32・Float64・Float80 |
後ろに数値付きは型のビット数らしいです。
UIntとかいうの含め、Javaでは馴染み無い型だな。
多分個人で使う事は無さそう。
配列については、操作(map とか)も含めてちゃんとまとめたい(勉強したい)んで、後日書きます。
演算子
四則演算
そのままです。
let add = 1 + 1 // 足し算(2) let sub = 1 - 1 // 引き算(0) let multi = 1 * 2 // 掛け算(2) let div = 1 / 1 //割り算(1) let rem = 3 % 2 // 余り(1)
演算子の前後スペースはあってもなくても良いけど
統一はしないとダメみたいです。
let add1 = 1 + 1 // 大丈夫 let add2 = 1+1 // 大丈夫 let addError = 1 +1 // 片方だけスペースあるんでコンパイルエラー
代入演算子
これもJavaそのままなのでサラっと。
let val = 1 var addeq = 1 addeq += val // 自身に足して代入(2) var subeq = 1 subeq -= val // 自身から引いて代入(0) var incBefore = 1 ++incBefore // インクリメントして処理(2) ※ワーニングが出る、Swift3からはなくなるらしい var incAfter = 1 incAfter++ // 処理してインクリメント(2) ※ワーニングが出る、Swift3からはなくなるらしい
PlayGroundについて
あまりXcodeの使い方はまとめる気がなくて、
というのも使いこなせてない&使いながら覚える気なので
まとめるとしたらだいぶ後からになります。
ただ、この記事を書く時に利用したXcodeの機能で、PlayGroundだけ紹介します。
直訳で遊び場?簡単なソース試すためのプロジェクトが作れます。
Java(Eclipse)ではそれ用のプロジェクト作ってて、本番とテストプロジェクトがパッと見分からなくなったり・・・
そんな、ずぼらな方でもこれなら大丈夫。
Xcode起動して「Get started with a playground」を選択
次回について
一気にとか言いつつバテました(
あと3回ぐらいは分けて書こうかな・・・
あとは制御構文と構造体、それと配列操作ぐらいですかね。
いつになったらアプリ作れるんだろ・・・