「アプリ開発」カテゴリーアーカイブ

【Swift2/JavaScript】「A Swift Toure」をJavaScriptの書き方と比較しながらSwift2文法を眺める2

とゆうか今先端はSwift3らしいですね。3ではデクリメント演算子が廃止されるって騒がれてますね。
コツコツここを眺めていきます。


?? operator

??はその後の変数をデフォルトvalueとすることとしている。
もしnickNameがnilならfullNameを参照する

let nickName: String? = nil
let fullName: String = "John Appleseed"
let informalGreeting = "Hi \(nickName ?? fullName)"


switch文

JSと違うところはcaseの所に複数マッチするところの書き方かな??
JSの場合case節は、

case "fafa" :
case "fefe" :
とやればどちらかにmatchすればそのブロックを実行する。
swiftの場合は下のように第二引数みたいに書く。

let vegetable = "red pepper"
switch vegetable {
case "celery":
        print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
        print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"):
        print("Is it a spicy \(x)?")
default:
        print("Everything tastes good in soup.")
}

上のここ
let x where x.hasSuffix("pepper"):
は何しているかってhasSuffixっていう関数は引数に渡された後ろからの文字列にマッチしていればtrueを返すようです。

let url = "https://kenjimorita.jp"
print(url.hasSuffix("p")) // true
print(url.hasSuffix("jp")) // true
print(url.hasSuffix("net")) // false
なので上の場合trueが返る

whereは返り値がfalseの場合else節に行くようです。
上の場合trueなのでxに割り当てられる

今日はちょっと五輪観ますのでこの辺でーー
でわまたーーー。

【Swift2/JavaScript】「A Swift Toure」をJavaScriptの書き方と比較しながらSwift2文法を眺める1

本買う前にドキュメント読む。

The Swift Programming Language (Swift 2.2)
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/doc/uid/TP40014097-CH31-ID445


Swift2

・swift2のletはJSでいうconst
・処理の終わりの「;」は要らない


数値型から文字列へのコンバート
Swift2

let label = "The width is "
let width = 94
let widthLabel = label + String(width)


文字列として出力するには、、
Swift2

let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples"
let fruitSummary = "I hava \(apples + oranges) pieces of fruit"
※シングルコーテーションはエラー


下のObject?は「dictionary」というらしい
Swift2

var occupations = [
"Malcolm" : "Captitain",
"Kaylee" : "Mechanic",
]
JSは波かっこだけどswift2はブラケットなんだね。
最後のelementの後にも「,」が許されている。
arrayはJSと同じ書き方


ArrayとDictionaryの初期化処理。
JSでいう
const emptyArray = [];
const emptyDictionary = {};
※再代入できないけど。。
Swift2

let emptyArray = [String]()
let emptyDictionary = [String: Float]()
※型をブラケット内のkeyと値に示す


型が推測できたり、関数への実引数として渡す場合はこういう書き方でいいらしい
Swift2

shoppingList = []//array
occupations = [:]//dictionary


コントロールフロー
イテレータブルなものを再帰する場合
JSでいうfor ofに近い気がしました。
Swift2

for count in 1...9 {
let kotae = 7 * count;
print(kotae);
}
//とか
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
※if statementはBoolean expressionでなくてはならない。0への暗黙の比較ではなく
if score { ... } is an errorを意味する


・JSでいうdefault parameterのようなものがある
・型の後ろに?をつけることで空だったら「nil」が入る
・if条件にletと一緒に記述することで、値が入っていない場合も動かすことができる

var optionalString: String? = "Hello"
var greeting = "Hello"
print(optionalString == nil)//Hello
var optionalName: String? = "John Appleseed"
if let name = optionalName {
greeting = "Hello,\(name)"
}


自分の知っている言語と比較するとすっと入ってくる気がする。
まだ沢山あるのでまたきます。
ありがとうございました